{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3>8.1 用变分自编码器生成图像</h3>"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 338,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch[1/30], Step [100/469], Reconst Loss: 20423.5039, KL Div: 1497.4268\n",
      "Epoch[1/30], Step [200/469], Reconst Loss: 18074.3887, KL Div: 1960.4033\n",
      "Epoch[1/30], Step [300/469], Reconst Loss: 15487.4551, KL Div: 2352.7061\n",
      "Epoch[1/30], Step [400/469], Reconst Loss: 14114.9980, KL Div: 2509.6038\n",
      "Epoch[2/30], Step [100/469], Reconst Loss: 13554.3174, KL Div: 2863.8770\n",
      "Epoch[2/30], Step [200/469], Reconst Loss: 12843.1699, KL Div: 2929.6050\n",
      "Epoch[2/30], Step [300/469], Reconst Loss: 12467.1152, KL Div: 2939.1704\n",
      "Epoch[2/30], Step [400/469], Reconst Loss: 12599.7930, KL Div: 3030.2324\n",
      "Epoch[3/30], Step [100/469], Reconst Loss: 11509.2432, KL Div: 3049.3989\n",
      "Epoch[3/30], Step [200/469], Reconst Loss: 11484.9121, KL Div: 2964.4810\n",
      "Epoch[3/30], Step [300/469], Reconst Loss: 11593.9053, KL Div: 3034.6235\n",
      "Epoch[3/30], Step [400/469], Reconst Loss: 11742.9102, KL Div: 3038.9167\n",
      "Epoch[4/30], Step [100/469], Reconst Loss: 11212.3379, KL Div: 3059.9778\n",
      "Epoch[4/30], Step [200/469], Reconst Loss: 10784.5146, KL Div: 3069.6299\n",
      "Epoch[4/30], Step [300/469], Reconst Loss: 11747.5039, KL Div: 3170.6162\n",
      "Epoch[4/30], Step [400/469], Reconst Loss: 10815.3828, KL Div: 3133.8298\n",
      "Epoch[5/30], Step [100/469], Reconst Loss: 10902.4434, KL Div: 3216.1025\n",
      "Epoch[5/30], Step [200/469], Reconst Loss: 11408.6533, KL Div: 3217.8188\n",
      "Epoch[5/30], Step [300/469], Reconst Loss: 10761.9902, KL Div: 3284.8596\n",
      "Epoch[5/30], Step [400/469], Reconst Loss: 10697.2910, KL Div: 3336.0166\n",
      "Epoch[6/30], Step [100/469], Reconst Loss: 11006.7129, KL Div: 3116.1055\n",
      "Epoch[6/30], Step [200/469], Reconst Loss: 10235.5596, KL Div: 3144.0093\n",
      "Epoch[6/30], Step [300/469], Reconst Loss: 10417.3613, KL Div: 3157.6882\n",
      "Epoch[6/30], Step [400/469], Reconst Loss: 10975.5811, KL Div: 3122.5254\n",
      "Epoch[7/30], Step [100/469], Reconst Loss: 10549.7529, KL Div: 3128.5312\n",
      "Epoch[7/30], Step [200/469], Reconst Loss: 11280.9316, KL Div: 3221.4590\n",
      "Epoch[7/30], Step [300/469], Reconst Loss: 11002.0439, KL Div: 3206.9756\n",
      "Epoch[7/30], Step [400/469], Reconst Loss: 10106.1973, KL Div: 3187.3552\n",
      "Epoch[8/30], Step [100/469], Reconst Loss: 10469.6133, KL Div: 3219.7461\n",
      "Epoch[8/30], Step [200/469], Reconst Loss: 10190.8857, KL Div: 3120.7188\n",
      "Epoch[8/30], Step [300/469], Reconst Loss: 10188.0234, KL Div: 3169.2705\n",
      "Epoch[8/30], Step [400/469], Reconst Loss: 9975.2148, KL Div: 3238.6172\n",
      "Epoch[9/30], Step [100/469], Reconst Loss: 10807.8350, KL Div: 3241.0337\n",
      "Epoch[9/30], Step [200/469], Reconst Loss: 9794.5605, KL Div: 3216.0566\n",
      "Epoch[9/30], Step [300/469], Reconst Loss: 10140.8936, KL Div: 3305.8137\n",
      "Epoch[9/30], Step [400/469], Reconst Loss: 10247.0273, KL Div: 3165.9351\n",
      "Epoch[10/30], Step [100/469], Reconst Loss: 10619.6699, KL Div: 3344.8203\n",
      "Epoch[10/30], Step [200/469], Reconst Loss: 10752.1465, KL Div: 3221.5642\n",
      "Epoch[10/30], Step [300/469], Reconst Loss: 10533.3770, KL Div: 3255.8115\n",
      "Epoch[10/30], Step [400/469], Reconst Loss: 10468.2305, KL Div: 3234.7119\n",
      "Epoch[11/30], Step [100/469], Reconst Loss: 10585.6221, KL Div: 3262.8975\n",
      "Epoch[11/30], Step [200/469], Reconst Loss: 10471.4375, KL Div: 3284.1057\n",
      "Epoch[11/30], Step [300/469], Reconst Loss: 10055.0742, KL Div: 3199.7319\n",
      "Epoch[11/30], Step [400/469], Reconst Loss: 10138.7500, KL Div: 3284.4507\n",
      "Epoch[12/30], Step [100/469], Reconst Loss: 10214.6914, KL Div: 3292.2170\n",
      "Epoch[12/30], Step [200/469], Reconst Loss: 10154.5635, KL Div: 3225.4526\n",
      "Epoch[12/30], Step [300/469], Reconst Loss: 10591.2803, KL Div: 3298.6440\n",
      "Epoch[12/30], Step [400/469], Reconst Loss: 10049.9463, KL Div: 3200.4045\n",
      "Epoch[13/30], Step [100/469], Reconst Loss: 10239.2500, KL Div: 3213.2781\n",
      "Epoch[13/30], Step [200/469], Reconst Loss: 10301.3105, KL Div: 3330.2358\n",
      "Epoch[13/30], Step [300/469], Reconst Loss: 10243.2441, KL Div: 3369.5239\n",
      "Epoch[13/30], Step [400/469], Reconst Loss: 9857.9102, KL Div: 3240.9944\n",
      "Epoch[14/30], Step [100/469], Reconst Loss: 10500.3008, KL Div: 3241.7744\n",
      "Epoch[14/30], Step [200/469], Reconst Loss: 9948.6895, KL Div: 3202.1355\n",
      "Epoch[14/30], Step [300/469], Reconst Loss: 9929.6631, KL Div: 3206.1826\n",
      "Epoch[14/30], Step [400/469], Reconst Loss: 9950.5674, KL Div: 3357.3057\n",
      "Epoch[15/30], Step [100/469], Reconst Loss: 10475.8379, KL Div: 3435.1284\n",
      "Epoch[15/30], Step [200/469], Reconst Loss: 9950.6514, KL Div: 3333.8208\n",
      "Epoch[15/30], Step [300/469], Reconst Loss: 10425.1162, KL Div: 3278.3979\n",
      "Epoch[15/30], Step [400/469], Reconst Loss: 9816.7383, KL Div: 3254.2988\n",
      "Epoch[16/30], Step [100/469], Reconst Loss: 9870.4414, KL Div: 3313.4214\n",
      "Epoch[16/30], Step [200/469], Reconst Loss: 10629.3428, KL Div: 3328.5833\n",
      "Epoch[16/30], Step [300/469], Reconst Loss: 10651.1309, KL Div: 3332.5220\n",
      "Epoch[16/30], Step [400/469], Reconst Loss: 9973.0137, KL Div: 3279.7585\n",
      "Epoch[17/30], Step [100/469], Reconst Loss: 10453.1904, KL Div: 3313.5967\n",
      "Epoch[17/30], Step [200/469], Reconst Loss: 10174.8584, KL Div: 3375.5483\n",
      "Epoch[17/30], Step [300/469], Reconst Loss: 9809.1973, KL Div: 3322.6509\n",
      "Epoch[17/30], Step [400/469], Reconst Loss: 9929.0488, KL Div: 3330.6433\n",
      "Epoch[18/30], Step [100/469], Reconst Loss: 10460.8799, KL Div: 3328.2988\n",
      "Epoch[18/30], Step [200/469], Reconst Loss: 10050.9248, KL Div: 3246.0547\n",
      "Epoch[18/30], Step [300/469], Reconst Loss: 10045.6641, KL Div: 3335.2910\n",
      "Epoch[18/30], Step [400/469], Reconst Loss: 10025.0820, KL Div: 3216.5293\n",
      "Epoch[19/30], Step [100/469], Reconst Loss: 10417.0166, KL Div: 3260.8633\n",
      "Epoch[19/30], Step [200/469], Reconst Loss: 9830.0928, KL Div: 3212.7786\n",
      "Epoch[19/30], Step [300/469], Reconst Loss: 10358.8242, KL Div: 3378.6079\n",
      "Epoch[19/30], Step [400/469], Reconst Loss: 10786.1064, KL Div: 3260.6558\n",
      "Epoch[20/30], Step [100/469], Reconst Loss: 9871.9990, KL Div: 3294.2026\n",
      "Epoch[20/30], Step [200/469], Reconst Loss: 9747.0977, KL Div: 3252.7310\n",
      "Epoch[20/30], Step [300/469], Reconst Loss: 10083.2988, KL Div: 3173.3325\n",
      "Epoch[20/30], Step [400/469], Reconst Loss: 9930.7354, KL Div: 3324.5210\n",
      "Epoch[21/30], Step [100/469], Reconst Loss: 10168.2715, KL Div: 3277.8269\n",
      "Epoch[21/30], Step [200/469], Reconst Loss: 9588.4766, KL Div: 3222.5767\n",
      "Epoch[21/30], Step [300/469], Reconst Loss: 10035.6533, KL Div: 3255.5974\n",
      "Epoch[21/30], Step [400/469], Reconst Loss: 10328.8262, KL Div: 3338.9675\n",
      "Epoch[22/30], Step [100/469], Reconst Loss: 9890.2168, KL Div: 3227.0986\n",
      "Epoch[22/30], Step [200/469], Reconst Loss: 10034.0361, KL Div: 3247.9062\n",
      "Epoch[22/30], Step [300/469], Reconst Loss: 9713.1426, KL Div: 3220.4531\n",
      "Epoch[22/30], Step [400/469], Reconst Loss: 9733.5576, KL Div: 3311.9194\n",
      "Epoch[23/30], Step [100/469], Reconst Loss: 9981.6963, KL Div: 3260.9976\n",
      "Epoch[23/30], Step [200/469], Reconst Loss: 9509.4990, KL Div: 3139.0068\n",
      "Epoch[23/30], Step [300/469], Reconst Loss: 10091.5938, KL Div: 3282.3655\n",
      "Epoch[23/30], Step [400/469], Reconst Loss: 9792.1162, KL Div: 3304.6035\n",
      "Epoch[24/30], Step [100/469], Reconst Loss: 10019.6953, KL Div: 3257.2253\n",
      "Epoch[24/30], Step [200/469], Reconst Loss: 10016.6104, KL Div: 3218.3950\n",
      "Epoch[24/30], Step [300/469], Reconst Loss: 9806.6729, KL Div: 3374.6172\n",
      "Epoch[24/30], Step [400/469], Reconst Loss: 10295.3994, KL Div: 3264.4075\n",
      "Epoch[25/30], Step [100/469], Reconst Loss: 9923.3223, KL Div: 3333.9355\n",
      "Epoch[25/30], Step [200/469], Reconst Loss: 10391.9297, KL Div: 3284.9622\n",
      "Epoch[25/30], Step [300/469], Reconst Loss: 9857.9600, KL Div: 3243.3359\n",
      "Epoch[25/30], Step [400/469], Reconst Loss: 10292.9102, KL Div: 3354.2437\n",
      "Epoch[26/30], Step [100/469], Reconst Loss: 10036.6230, KL Div: 3266.7078\n",
      "Epoch[26/30], Step [200/469], Reconst Loss: 9974.6426, KL Div: 3269.6436\n",
      "Epoch[26/30], Step [300/469], Reconst Loss: 10096.0117, KL Div: 3281.5176\n",
      "Epoch[26/30], Step [400/469], Reconst Loss: 10096.8018, KL Div: 3290.9897\n",
      "Epoch[27/30], Step [100/469], Reconst Loss: 9886.0166, KL Div: 3303.9829\n",
      "Epoch[27/30], Step [200/469], Reconst Loss: 9994.5059, KL Div: 3248.9568\n",
      "Epoch[27/30], Step [300/469], Reconst Loss: 10109.3037, KL Div: 3406.7715\n",
      "Epoch[27/30], Step [400/469], Reconst Loss: 9743.6426, KL Div: 3162.1497\n",
      "Epoch[28/30], Step [100/469], Reconst Loss: 10047.5234, KL Div: 3381.1680\n",
      "Epoch[28/30], Step [200/469], Reconst Loss: 9746.3447, KL Div: 3252.9009\n",
      "Epoch[28/30], Step [300/469], Reconst Loss: 10215.3301, KL Div: 3309.7766\n",
      "Epoch[28/30], Step [400/469], Reconst Loss: 9923.4941, KL Div: 3309.4121\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch[29/30], Step [100/469], Reconst Loss: 9692.6348, KL Div: 3300.3608\n",
      "Epoch[29/30], Step [200/469], Reconst Loss: 9893.6953, KL Div: 3273.6987\n",
      "Epoch[29/30], Step [300/469], Reconst Loss: 9521.3486, KL Div: 3259.1191\n",
      "Epoch[29/30], Step [400/469], Reconst Loss: 9853.0811, KL Div: 3377.7917\n",
      "Epoch[30/30], Step [100/469], Reconst Loss: 10063.2480, KL Div: 3291.5625\n",
      "Epoch[30/30], Step [200/469], Reconst Loss: 9703.7441, KL Div: 3332.4224\n",
      "Epoch[30/30], Step [300/469], Reconst Loss: 9818.6143, KL Div: 3306.7666\n",
      "Epoch[30/30], Step [400/469], Reconst Loss: 9612.6357, KL Div: 3308.6094\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torchvision\n",
    "from torchvision import transforms\n",
    "from torchvision.utils import save_image\n",
    "\n",
    "\n",
    "# 设备配置\n",
    "torch.cuda.set_device(1) # 这句用来设置pytorch在哪块GPU上运行，这里假设使用序号为1的这块GPU.\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "\n",
    "\n",
    "#在当前目录，创建不存在的目录ave_samples\n",
    "sample_dir = 'ave_samples'\n",
    "if not os.path.exists(sample_dir):\n",
    "    os.makedirs(sample_dir)\n",
    "\n",
    "# 定义一些超参数\n",
    "image_size = 784\n",
    "h_dim = 400\n",
    "z_dim = 20\n",
    "num_epochs = 30\n",
    "batch_size = 128\n",
    "learning_rate = 0.001\n",
    "\n",
    "# 下载MNIST训练集，这里因已下载，故download=False\n",
    "dataset = torchvision.datasets.MNIST(root='data',\n",
    "                                     train=True,\n",
    "                                     transform=transforms.ToTensor(),\n",
    "                                     download=False)\n",
    "\n",
    "#数据加载\n",
    "data_loader = torch.utils.data.DataLoader(dataset=dataset,\n",
    "                                          batch_size=batch_size, \n",
    "                                          shuffle=True)\n",
    "\n",
    "\n",
    "# 定义AVE模型\n",
    "class VAE(nn.Module):\n",
    "    def __init__(self, image_size=784, h_dim=400, z_dim=20):\n",
    "        super(VAE, self).__init__()\n",
    "        self.fc1 = nn.Linear(image_size, h_dim)\n",
    "        self.fc2 = nn.Linear(h_dim, z_dim)\n",
    "        self.fc3 = nn.Linear(h_dim, z_dim)\n",
    "        self.fc4 = nn.Linear(z_dim, h_dim)\n",
    "        self.fc5 = nn.Linear(h_dim, image_size)\n",
    "        \n",
    "    def encode(self, x):\n",
    "        h = F.relu(self.fc1(x))\n",
    "        return self.fc2(h), self.fc3(h)\n",
    "    \n",
    "    def reparameterize(self, mu, log_var):\n",
    "        std = torch.exp(log_var/2)\n",
    "        eps = torch.randn_like(std)\n",
    "        return mu + eps * std\n",
    "\n",
    "    def decode(self, z):\n",
    "        h = F.relu(self.fc4(z))\n",
    "        return F.sigmoid(self.fc5(h))\n",
    "    \n",
    "    def forward(self, x):\n",
    "        mu, log_var = self.encode(x)\n",
    "        z = self.reparameterize(mu, log_var)\n",
    "        x_reconst = self.decode(z)\n",
    "        return x_reconst, mu, log_var\n",
    "\n",
    "model = VAE().to(device)\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)\n",
    "\n",
    "#开始训练模型\n",
    "for epoch in range(num_epochs):\n",
    "    model.train()\n",
    "    for i, (x, _) in enumerate(data_loader):\n",
    "        # 前向传播\n",
    "        model.zero_grad()\n",
    "        x = x.to(device).view(-1, image_size)\n",
    "        x_reconst, mu, log_var = model(x)\n",
    "        \n",
    "        # Compute reconstruction loss and kl divergence\n",
    "        # For KL divergence, see Appendix B in VAE paper or http://yunjey47.tistory.com/43\n",
    "        reconst_loss = F.binary_cross_entropy(x_reconst, x, size_average=False)\n",
    "        kl_div = - 0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp())\n",
    "        \n",
    "        #反向传播及优化器\n",
    "        loss = reconst_loss + kl_div\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        \n",
    "        if (i+1) % 100 == 0:\n",
    "            print (\"Epoch[{}/{}], Step [{}/{}], Reconst Loss: {:.4f}, KL Div: {:.4f}\" \n",
    "                   .format(epoch+1, num_epochs, i+1, len(data_loader), reconst_loss.item(), kl_div.item()))\n",
    "    \n",
    "    with torch.no_grad():\n",
    "        # 保存采样图像，即潜在向量Z通过解码器生成的新图像\n",
    "        z = torch.randn(batch_size, z_dim).to(device)\n",
    "        out = model.decode(z).view(-1, 1, 28, 28)\n",
    "        save_image(out, os.path.join(sample_dir, 'sampled-{}.png'.format(epoch+1)))\n",
    "\n",
    "        # 保存重构图像，即原图像通过解码器生成的图像\n",
    "        out, _, _ = model(x)\n",
    "        x_concat = torch.cat([x.view(-1, 1, 28, 28), out.view(-1, 1, 28, 28)], dim=3)\n",
    "        save_image(x_concat, os.path.join(sample_dir, 'reconst-{}.png'.format(epoch+1)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 339,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "reconsPath = './ave_samples/reconst-30.png'\n",
    "Image = mpimg.imread(reconsPath)\n",
    "plt.imshow(Image) # 显示图片\n",
    "plt.axis('off') # 不显示坐标轴\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 340,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "genPath = './ave_samples/sampled-30.png'\n",
    "Image = mpimg.imread(genPath)\n",
    "plt.imshow(Image) # 显示图片\n",
    "plt.axis('off') # 不显示坐标轴\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting requests\n",
      "  Downloading requests-2.25.1-py2.py3-none-any.whl (61 kB)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\masaikk\\anaconda3\\envs\\mytorch\\lib\\site-packages (from requests) (2020.12.5)\n",
      "Collecting urllib3<1.27,>=1.21.1\n",
      "  Downloading urllib3-1.26.3-py2.py3-none-any.whl (137 kB)\n",
      "Collecting chardet<5,>=3.0.2\n",
      "  Downloading chardet-4.0.0-py2.py3-none-any.whl (178 kB)\n",
      "Collecting idna<3,>=2.5\n",
      "  Downloading idna-2.10-py2.py3-none-any.whl (58 kB)\n",
      "Installing collected packages: urllib3, idna, chardet, requests\n",
      "Successfully installed chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.3\n"
     ]
    }
   ],
   "source": [
    "!pip install requests"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "<h3>8.3用GAN生成图像</h3>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to data\\MNIST\\raw\\train-images-idx3-ubyte.gz\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100.0%\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting data\\MNIST\\raw\\train-images-idx3-ubyte.gz to data\\MNIST\\raw\n",
      "Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to data\\MNIST\\raw\\train-labels-idx1-ubyte.gz\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "102.8%\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting data\\MNIST\\raw\\train-labels-idx1-ubyte.gz to data\\MNIST\\raw\n",
      "Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to data\\MNIST\\raw\\t10k-images-idx3-ubyte.gz\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100.0%\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting data\\MNIST\\raw\\t10k-images-idx3-ubyte.gz to data\\MNIST\\raw\n",
      "Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to data\\MNIST\\raw\\t10k-labels-idx1-ubyte.gz\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "112.7%"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting data\\MNIST\\raw\\t10k-labels-idx1-ubyte.gz to data\\MNIST\\raw\n",
      "Processing...\n",
      "Done!\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "C:\\Users\\masaikk\\anaconda3\\envs\\mytorch\\lib\\site-packages\\torchvision\\datasets\\mnist.py:479: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at  ..\\torch\\csrc\\utils\\tensor_numpy.cpp:143.)\n",
      "  return torch.from_numpy(parsed.astype(m[2], copy=False)).view(*s)\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import torch\n",
    "import torchvision\n",
    "import torch.nn as nn\n",
    "from torchvision import transforms\n",
    "from torchvision.utils import save_image\n",
    "\n",
    "\n",
    "# 设备配置\n",
    "torch.cuda.set_device(0) # 这句用来设置pytorch在哪块GPU上运行，这里假设使用序号为1的这块GPU.\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "\n",
    "\n",
    "# 定义一些超参数\n",
    "latent_size = 64\n",
    "hidden_size = 256\n",
    "image_size = 784\n",
    "num_epochs = 200\n",
    "batch_size = 100\n",
    "sample_dir = 'gan_samples'\n",
    "\n",
    "# 在当前目录，创建不存在的目录gan_samples\n",
    "if not os.path.exists(sample_dir):\n",
    "    os.makedirs(sample_dir)\n",
    "\n",
    "# Image processing\n",
    "trans = transforms.Compose([\n",
    "                transforms.ToTensor(),transforms.Normalize([0.5], [0.5])])\n",
    "\n",
    "\n",
    "# MNIST dataset\n",
    "mnist = torchvision.datasets.MNIST(root='data',\n",
    "                                   train=True,\n",
    "                                   transform=trans,\n",
    "                                   download=True)\n",
    "\n",
    "# Data loader\n",
    "data_loader = torch.utils.data.DataLoader(dataset=mnist,\n",
    "                                          batch_size=batch_size, \n",
    "                                          shuffle=True)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 构建判断器\n",
    "D = nn.Sequential(\n",
    "    nn.Linear(image_size, hidden_size),\n",
    "    nn.LeakyReLU(0.2),\n",
    "    nn.Linear(hidden_size, hidden_size),\n",
    "    nn.LeakyReLU(0.2),\n",
    "    nn.Linear(hidden_size, 1),\n",
    "    nn.Sigmoid())\n",
    "\n",
    "# 构建生成器，这个相当于AVE中的解码器 \n",
    "G = nn.Sequential(\n",
    "    nn.Linear(latent_size, hidden_size),\n",
    "    nn.ReLU(),\n",
    "    nn.Linear(hidden_size, hidden_size),\n",
    "    nn.ReLU(),\n",
    "    nn.Linear(hidden_size, image_size),\n",
    "    nn.Tanh())\n",
    "\n",
    "# 把判别器和生成器迁移到GPU上\n",
    "D = D.to(device)\n",
    "G = G.to(device)\n",
    "\n",
    "# 定义判别器的损失函数交叉熵及优化器\n",
    "criterion = nn.BCELoss()\n",
    "d_optimizer = torch.optim.Adam(D.parameters(), lr=0.0002)\n",
    "g_optimizer = torch.optim.Adam(G.parameters(), lr=0.0002)\n",
    "\n",
    "#Clamp函数x限制在区间[min, max]内\n",
    "def denorm(x):\n",
    "    out = (x + 1) / 2\n",
    "    return out.clamp(0, 1)\n",
    "\n",
    "def reset_grad():\n",
    "    d_optimizer.zero_grad()\n",
    "    g_optimizer.zero_grad()\n",
    "\n",
    "# 开始训练\n",
    "total_step = len(data_loader)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [0/200], Step [200/600], d_loss: 0.0560, g_loss: 4.3612, D(x): 0.99, D(G(z)): 0.04\n",
      "Epoch [0/200], Step [400/600], d_loss: 0.0422, g_loss: 6.3167, D(x): 0.99, D(G(z)): 0.03\n",
      "Epoch [0/200], Step [600/600], d_loss: 0.0267, g_loss: 5.3493, D(x): 0.99, D(G(z)): 0.02\n",
      "Epoch [1/200], Step [200/600], d_loss: 0.0518, g_loss: 4.7795, D(x): 0.98, D(G(z)): 0.03\n",
      "Epoch [1/200], Step [400/600], d_loss: 0.1653, g_loss: 3.5929, D(x): 0.95, D(G(z)): 0.10\n",
      "Epoch [1/200], Step [600/600], d_loss: 0.3241, g_loss: 3.3666, D(x): 0.89, D(G(z)): 0.16\n",
      "Epoch [2/200], Step [200/600], d_loss: 0.1378, g_loss: 4.7073, D(x): 0.96, D(G(z)): 0.08\n",
      "Epoch [2/200], Step [400/600], d_loss: 0.1749, g_loss: 3.9019, D(x): 0.98, D(G(z)): 0.13\n",
      "Epoch [2/200], Step [600/600], d_loss: 0.5074, g_loss: 3.0398, D(x): 0.78, D(G(z)): 0.09\n",
      "Epoch [3/200], Step [200/600], d_loss: 0.3742, g_loss: 4.6096, D(x): 0.94, D(G(z)): 0.14\n",
      "Epoch [3/200], Step [400/600], d_loss: 0.5288, g_loss: 3.8190, D(x): 0.97, D(G(z)): 0.35\n",
      "Epoch [3/200], Step [600/600], d_loss: 0.7243, g_loss: 2.5903, D(x): 0.86, D(G(z)): 0.37\n",
      "Epoch [4/200], Step [200/600], d_loss: 0.4535, g_loss: 3.3347, D(x): 0.80, D(G(z)): 0.03\n",
      "Epoch [4/200], Step [400/600], d_loss: 0.0439, g_loss: 3.6533, D(x): 0.98, D(G(z)): 0.03\n",
      "Epoch [4/200], Step [600/600], d_loss: 0.0948, g_loss: 3.6411, D(x): 0.97, D(G(z)): 0.04\n",
      "Epoch [5/200], Step [200/600], d_loss: 0.0693, g_loss: 4.8129, D(x): 0.96, D(G(z)): 0.02\n",
      "Epoch [5/200], Step [400/600], d_loss: 0.0511, g_loss: 7.2794, D(x): 0.98, D(G(z)): 0.03\n",
      "Epoch [5/200], Step [600/600], d_loss: 0.0589, g_loss: 5.2230, D(x): 0.98, D(G(z)): 0.03\n",
      "Epoch [6/200], Step [200/600], d_loss: 0.0406, g_loss: 6.4350, D(x): 0.98, D(G(z)): 0.02\n",
      "Epoch [6/200], Step [400/600], d_loss: 0.0266, g_loss: 5.7405, D(x): 0.99, D(G(z)): 0.02\n",
      "Epoch [6/200], Step [600/600], d_loss: 0.0674, g_loss: 5.6738, D(x): 1.00, D(G(z)): 0.06\n",
      "Epoch [7/200], Step [200/600], d_loss: 0.0339, g_loss: 7.3552, D(x): 0.98, D(G(z)): 0.01\n",
      "Epoch [7/200], Step [400/600], d_loss: 0.0152, g_loss: 6.2520, D(x): 0.99, D(G(z)): 0.01\n",
      "Epoch [7/200], Step [600/600], d_loss: 0.1146, g_loss: 6.0899, D(x): 0.96, D(G(z)): 0.02\n",
      "Epoch [8/200], Step [200/600], d_loss: 0.0337, g_loss: 7.3636, D(x): 0.99, D(G(z)): 0.02\n",
      "Epoch [8/200], Step [400/600], d_loss: 0.0283, g_loss: 7.4129, D(x): 0.99, D(G(z)): 0.00\n",
      "Epoch [8/200], Step [600/600], d_loss: 0.1154, g_loss: 10.1127, D(x): 0.95, D(G(z)): 0.01\n",
      "Epoch [9/200], Step [200/600], d_loss: 0.0657, g_loss: 6.1014, D(x): 0.98, D(G(z)): 0.01\n",
      "Epoch [9/200], Step [400/600], d_loss: 0.1004, g_loss: 7.8050, D(x): 0.96, D(G(z)): 0.00\n",
      "Epoch [9/200], Step [600/600], d_loss: 0.2838, g_loss: 6.5875, D(x): 0.98, D(G(z)): 0.14\n",
      "Epoch [10/200], Step [200/600], d_loss: 0.0879, g_loss: 6.6063, D(x): 0.97, D(G(z)): 0.01\n",
      "Epoch [10/200], Step [400/600], d_loss: 0.1571, g_loss: 4.8675, D(x): 0.93, D(G(z)): 0.03\n",
      "Epoch [10/200], Step [600/600], d_loss: 0.1412, g_loss: 6.2646, D(x): 0.96, D(G(z)): 0.07\n",
      "Epoch [11/200], Step [200/600], d_loss: 0.1003, g_loss: 7.8096, D(x): 0.97, D(G(z)): 0.03\n",
      "Epoch [11/200], Step [400/600], d_loss: 0.2020, g_loss: 4.5940, D(x): 0.95, D(G(z)): 0.06\n",
      "Epoch [11/200], Step [600/600], d_loss: 0.2540, g_loss: 3.7189, D(x): 0.95, D(G(z)): 0.07\n",
      "Epoch [12/200], Step [200/600], d_loss: 0.1810, g_loss: 3.1958, D(x): 0.94, D(G(z)): 0.06\n",
      "Epoch [12/200], Step [400/600], d_loss: 0.2405, g_loss: 3.7698, D(x): 0.97, D(G(z)): 0.11\n",
      "Epoch [12/200], Step [600/600], d_loss: 0.1742, g_loss: 4.9400, D(x): 0.96, D(G(z)): 0.08\n",
      "Epoch [13/200], Step [200/600], d_loss: 0.1297, g_loss: 4.1015, D(x): 0.95, D(G(z)): 0.03\n",
      "Epoch [13/200], Step [400/600], d_loss: 0.1303, g_loss: 5.4686, D(x): 0.96, D(G(z)): 0.04\n",
      "Epoch [13/200], Step [600/600], d_loss: 0.3475, g_loss: 4.5325, D(x): 0.92, D(G(z)): 0.04\n",
      "Epoch [14/200], Step [200/600], d_loss: 0.1565, g_loss: 3.6602, D(x): 0.98, D(G(z)): 0.11\n",
      "Epoch [14/200], Step [400/600], d_loss: 0.2966, g_loss: 4.5071, D(x): 0.91, D(G(z)): 0.06\n",
      "Epoch [14/200], Step [600/600], d_loss: 0.1649, g_loss: 3.7362, D(x): 0.98, D(G(z)): 0.10\n",
      "Epoch [15/200], Step [200/600], d_loss: 0.3131, g_loss: 4.8984, D(x): 0.89, D(G(z)): 0.06\n",
      "Epoch [15/200], Step [400/600], d_loss: 0.3367, g_loss: 3.3656, D(x): 0.86, D(G(z)): 0.07\n",
      "Epoch [15/200], Step [600/600], d_loss: 0.4160, g_loss: 3.2498, D(x): 0.83, D(G(z)): 0.02\n",
      "Epoch [16/200], Step [200/600], d_loss: 0.1886, g_loss: 4.6442, D(x): 0.92, D(G(z)): 0.04\n",
      "Epoch [16/200], Step [400/600], d_loss: 0.2227, g_loss: 4.3730, D(x): 0.92, D(G(z)): 0.04\n",
      "Epoch [16/200], Step [600/600], d_loss: 0.2508, g_loss: 5.9273, D(x): 0.92, D(G(z)): 0.06\n",
      "Epoch [17/200], Step [200/600], d_loss: 0.1348, g_loss: 4.7992, D(x): 0.95, D(G(z)): 0.05\n",
      "Epoch [17/200], Step [400/600], d_loss: 0.1481, g_loss: 5.5808, D(x): 0.97, D(G(z)): 0.05\n",
      "Epoch [17/200], Step [600/600], d_loss: 0.2321, g_loss: 3.1555, D(x): 0.95, D(G(z)): 0.08\n",
      "Epoch [18/200], Step [200/600], d_loss: 0.1171, g_loss: 3.5399, D(x): 0.97, D(G(z)): 0.06\n",
      "Epoch [18/200], Step [400/600], d_loss: 0.1905, g_loss: 7.0263, D(x): 0.96, D(G(z)): 0.07\n",
      "Epoch [18/200], Step [600/600], d_loss: 0.2402, g_loss: 6.4031, D(x): 0.90, D(G(z)): 0.01\n",
      "Epoch [19/200], Step [200/600], d_loss: 0.1347, g_loss: 4.9580, D(x): 0.95, D(G(z)): 0.04\n",
      "Epoch [19/200], Step [400/600], d_loss: 0.2166, g_loss: 4.1731, D(x): 0.95, D(G(z)): 0.07\n",
      "Epoch [19/200], Step [600/600], d_loss: 0.1563, g_loss: 4.2879, D(x): 0.94, D(G(z)): 0.03\n",
      "Epoch [20/200], Step [200/600], d_loss: 0.1725, g_loss: 4.6797, D(x): 0.95, D(G(z)): 0.06\n",
      "Epoch [20/200], Step [400/600], d_loss: 0.4272, g_loss: 5.0089, D(x): 0.94, D(G(z)): 0.11\n",
      "Epoch [20/200], Step [600/600], d_loss: 0.1895, g_loss: 4.9924, D(x): 0.92, D(G(z)): 0.03\n",
      "Epoch [21/200], Step [200/600], d_loss: 0.3063, g_loss: 4.4479, D(x): 0.93, D(G(z)): 0.06\n",
      "Epoch [21/200], Step [400/600], d_loss: 0.2242, g_loss: 4.7978, D(x): 0.92, D(G(z)): 0.06\n",
      "Epoch [21/200], Step [600/600], d_loss: 0.4864, g_loss: 4.9892, D(x): 0.83, D(G(z)): 0.02\n",
      "Epoch [22/200], Step [200/600], d_loss: 0.2499, g_loss: 4.9750, D(x): 0.94, D(G(z)): 0.10\n",
      "Epoch [22/200], Step [400/600], d_loss: 0.3763, g_loss: 5.1405, D(x): 0.86, D(G(z)): 0.06\n",
      "Epoch [22/200], Step [600/600], d_loss: 0.2885, g_loss: 4.8167, D(x): 0.96, D(G(z)): 0.14\n",
      "Epoch [23/200], Step [200/600], d_loss: 0.3410, g_loss: 4.1330, D(x): 0.93, D(G(z)): 0.13\n",
      "Epoch [23/200], Step [400/600], d_loss: 0.2740, g_loss: 4.1173, D(x): 0.90, D(G(z)): 0.04\n",
      "Epoch [23/200], Step [600/600], d_loss: 0.3801, g_loss: 4.1407, D(x): 0.89, D(G(z)): 0.07\n",
      "Epoch [24/200], Step [200/600], d_loss: 0.2554, g_loss: 3.9113, D(x): 0.93, D(G(z)): 0.11\n",
      "Epoch [24/200], Step [400/600], d_loss: 0.3186, g_loss: 3.0902, D(x): 0.92, D(G(z)): 0.13\n",
      "Epoch [24/200], Step [600/600], d_loss: 0.5282, g_loss: 2.6977, D(x): 0.83, D(G(z)): 0.07\n",
      "Epoch [25/200], Step [200/600], d_loss: 0.3636, g_loss: 3.6585, D(x): 0.89, D(G(z)): 0.12\n",
      "Epoch [25/200], Step [400/600], d_loss: 0.2240, g_loss: 3.6002, D(x): 0.94, D(G(z)): 0.08\n",
      "Epoch [25/200], Step [600/600], d_loss: 0.1994, g_loss: 4.2205, D(x): 0.93, D(G(z)): 0.07\n",
      "Epoch [26/200], Step [200/600], d_loss: 0.3604, g_loss: 3.1747, D(x): 0.89, D(G(z)): 0.07\n",
      "Epoch [26/200], Step [400/600], d_loss: 0.3160, g_loss: 4.2005, D(x): 0.96, D(G(z)): 0.16\n",
      "Epoch [26/200], Step [600/600], d_loss: 0.3661, g_loss: 4.1895, D(x): 0.90, D(G(z)): 0.07\n",
      "Epoch [27/200], Step [200/600], d_loss: 0.3433, g_loss: 4.7371, D(x): 0.89, D(G(z)): 0.06\n",
      "Epoch [27/200], Step [400/600], d_loss: 0.3347, g_loss: 4.1915, D(x): 0.89, D(G(z)): 0.09\n",
      "Epoch [27/200], Step [600/600], d_loss: 0.2549, g_loss: 5.1728, D(x): 0.95, D(G(z)): 0.11\n",
      "Epoch [28/200], Step [200/600], d_loss: 0.3531, g_loss: 5.4794, D(x): 0.96, D(G(z)): 0.14\n",
      "Epoch [28/200], Step [400/600], d_loss: 0.2449, g_loss: 6.2127, D(x): 0.96, D(G(z)): 0.12\n",
      "Epoch [28/200], Step [600/600], d_loss: 0.1826, g_loss: 4.9865, D(x): 0.91, D(G(z)): 0.02\n",
      "Epoch [29/200], Step [200/600], d_loss: 0.2402, g_loss: 4.9606, D(x): 0.90, D(G(z)): 0.05\n",
      "Epoch [29/200], Step [400/600], d_loss: 0.3054, g_loss: 3.3013, D(x): 0.97, D(G(z)): 0.15\n",
      "Epoch [29/200], Step [600/600], d_loss: 0.4772, g_loss: 5.4590, D(x): 0.83, D(G(z)): 0.02\n",
      "Epoch [30/200], Step [200/600], d_loss: 0.2448, g_loss: 4.2057, D(x): 0.94, D(G(z)): 0.09\n",
      "Epoch [30/200], Step [400/600], d_loss: 0.2602, g_loss: 4.1167, D(x): 0.88, D(G(z)): 0.05\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [30/200], Step [600/600], d_loss: 0.2839, g_loss: 4.9574, D(x): 0.93, D(G(z)): 0.11\n",
      "Epoch [31/200], Step [200/600], d_loss: 0.3318, g_loss: 4.0750, D(x): 0.88, D(G(z)): 0.06\n",
      "Epoch [31/200], Step [400/600], d_loss: 0.3784, g_loss: 5.4077, D(x): 0.86, D(G(z)): 0.03\n",
      "Epoch [31/200], Step [600/600], d_loss: 0.3612, g_loss: 5.1176, D(x): 0.92, D(G(z)): 0.14\n",
      "Epoch [32/200], Step [200/600], d_loss: 0.1929, g_loss: 4.9278, D(x): 0.92, D(G(z)): 0.06\n",
      "Epoch [32/200], Step [400/600], d_loss: 0.4195, g_loss: 3.9918, D(x): 0.86, D(G(z)): 0.08\n",
      "Epoch [32/200], Step [600/600], d_loss: 0.6266, g_loss: 2.6230, D(x): 0.81, D(G(z)): 0.10\n",
      "Epoch [33/200], Step [200/600], d_loss: 0.3262, g_loss: 3.2711, D(x): 0.88, D(G(z)): 0.08\n",
      "Epoch [33/200], Step [400/600], d_loss: 0.4028, g_loss: 3.8344, D(x): 0.87, D(G(z)): 0.11\n",
      "Epoch [33/200], Step [600/600], d_loss: 0.3079, g_loss: 4.0903, D(x): 0.91, D(G(z)): 0.12\n",
      "Epoch [34/200], Step [200/600], d_loss: 0.4555, g_loss: 3.1837, D(x): 0.85, D(G(z)): 0.11\n",
      "Epoch [34/200], Step [400/600], d_loss: 0.4745, g_loss: 3.9611, D(x): 0.84, D(G(z)): 0.08\n",
      "Epoch [34/200], Step [600/600], d_loss: 0.5366, g_loss: 2.7673, D(x): 0.94, D(G(z)): 0.27\n",
      "Epoch [35/200], Step [200/600], d_loss: 0.4319, g_loss: 3.5132, D(x): 0.91, D(G(z)): 0.19\n",
      "Epoch [35/200], Step [400/600], d_loss: 0.5552, g_loss: 2.9525, D(x): 0.86, D(G(z)): 0.20\n",
      "Epoch [35/200], Step [600/600], d_loss: 0.2870, g_loss: 3.5938, D(x): 0.92, D(G(z)): 0.11\n",
      "Epoch [36/200], Step [200/600], d_loss: 0.4432, g_loss: 3.3879, D(x): 0.86, D(G(z)): 0.10\n",
      "Epoch [36/200], Step [400/600], d_loss: 0.3564, g_loss: 2.9335, D(x): 0.90, D(G(z)): 0.13\n",
      "Epoch [36/200], Step [600/600], d_loss: 0.2979, g_loss: 3.0605, D(x): 0.94, D(G(z)): 0.17\n",
      "Epoch [37/200], Step [200/600], d_loss: 0.4289, g_loss: 4.1709, D(x): 0.85, D(G(z)): 0.07\n",
      "Epoch [37/200], Step [400/600], d_loss: 0.3195, g_loss: 5.2187, D(x): 0.94, D(G(z)): 0.12\n",
      "Epoch [37/200], Step [600/600], d_loss: 0.3192, g_loss: 4.9200, D(x): 0.95, D(G(z)): 0.17\n",
      "Epoch [38/200], Step [200/600], d_loss: 0.1427, g_loss: 4.4337, D(x): 0.96, D(G(z)): 0.06\n",
      "Epoch [38/200], Step [400/600], d_loss: 0.3077, g_loss: 3.1210, D(x): 0.94, D(G(z)): 0.11\n",
      "Epoch [38/200], Step [600/600], d_loss: 0.2331, g_loss: 4.5236, D(x): 0.94, D(G(z)): 0.06\n",
      "Epoch [39/200], Step [200/600], d_loss: 0.3876, g_loss: 2.9537, D(x): 0.86, D(G(z)): 0.08\n",
      "Epoch [39/200], Step [400/600], d_loss: 0.4781, g_loss: 2.9694, D(x): 0.87, D(G(z)): 0.16\n",
      "Epoch [39/200], Step [600/600], d_loss: 0.4949, g_loss: 4.7110, D(x): 0.82, D(G(z)): 0.07\n",
      "Epoch [40/200], Step [200/600], d_loss: 0.5100, g_loss: 4.1028, D(x): 0.87, D(G(z)): 0.17\n",
      "Epoch [40/200], Step [400/600], d_loss: 0.6132, g_loss: 2.2970, D(x): 0.82, D(G(z)): 0.13\n",
      "Epoch [40/200], Step [600/600], d_loss: 0.5259, g_loss: 2.3208, D(x): 0.85, D(G(z)): 0.17\n",
      "Epoch [41/200], Step [200/600], d_loss: 0.2725, g_loss: 3.1101, D(x): 0.90, D(G(z)): 0.07\n",
      "Epoch [41/200], Step [400/600], d_loss: 0.4765, g_loss: 3.4908, D(x): 0.83, D(G(z)): 0.13\n",
      "Epoch [41/200], Step [600/600], d_loss: 0.5608, g_loss: 3.2021, D(x): 0.79, D(G(z)): 0.10\n",
      "Epoch [42/200], Step [200/600], d_loss: 0.6968, g_loss: 2.9634, D(x): 0.75, D(G(z)): 0.16\n",
      "Epoch [42/200], Step [400/600], d_loss: 0.6979, g_loss: 2.6361, D(x): 0.84, D(G(z)): 0.23\n",
      "Epoch [42/200], Step [600/600], d_loss: 0.5443, g_loss: 2.7733, D(x): 0.82, D(G(z)): 0.13\n",
      "Epoch [43/200], Step [200/600], d_loss: 0.7045, g_loss: 1.7880, D(x): 0.94, D(G(z)): 0.34\n",
      "Epoch [43/200], Step [400/600], d_loss: 0.5752, g_loss: 2.3576, D(x): 0.79, D(G(z)): 0.12\n",
      "Epoch [43/200], Step [600/600], d_loss: 0.6358, g_loss: 2.4536, D(x): 0.80, D(G(z)): 0.14\n",
      "Epoch [44/200], Step [200/600], d_loss: 0.4138, g_loss: 2.5755, D(x): 0.85, D(G(z)): 0.14\n",
      "Epoch [44/200], Step [400/600], d_loss: 0.6995, g_loss: 3.1418, D(x): 0.78, D(G(z)): 0.17\n",
      "Epoch [44/200], Step [600/600], d_loss: 0.5120, g_loss: 1.9064, D(x): 0.86, D(G(z)): 0.21\n",
      "Epoch [45/200], Step [200/600], d_loss: 0.4710, g_loss: 2.9969, D(x): 0.83, D(G(z)): 0.14\n",
      "Epoch [45/200], Step [400/600], d_loss: 0.6762, g_loss: 2.6319, D(x): 0.79, D(G(z)): 0.24\n",
      "Epoch [45/200], Step [600/600], d_loss: 0.6267, g_loss: 2.3239, D(x): 0.75, D(G(z)): 0.13\n",
      "Epoch [46/200], Step [200/600], d_loss: 0.6881, g_loss: 2.9641, D(x): 0.76, D(G(z)): 0.16\n",
      "Epoch [46/200], Step [400/600], d_loss: 0.6024, g_loss: 2.1832, D(x): 0.82, D(G(z)): 0.18\n",
      "Epoch [46/200], Step [600/600], d_loss: 0.6007, g_loss: 2.6620, D(x): 0.81, D(G(z)): 0.18\n",
      "Epoch [47/200], Step [200/600], d_loss: 0.7479, g_loss: 2.6077, D(x): 0.71, D(G(z)): 0.07\n",
      "Epoch [47/200], Step [400/600], d_loss: 0.6717, g_loss: 2.8036, D(x): 0.78, D(G(z)): 0.13\n",
      "Epoch [47/200], Step [600/600], d_loss: 0.4751, g_loss: 2.9419, D(x): 0.84, D(G(z)): 0.12\n",
      "Epoch [48/200], Step [200/600], d_loss: 0.3266, g_loss: 3.2408, D(x): 0.90, D(G(z)): 0.14\n",
      "Epoch [48/200], Step [400/600], d_loss: 0.5670, g_loss: 2.5567, D(x): 0.81, D(G(z)): 0.13\n",
      "Epoch [48/200], Step [600/600], d_loss: 0.2908, g_loss: 3.8876, D(x): 0.90, D(G(z)): 0.10\n",
      "Epoch [49/200], Step [200/600], d_loss: 0.6161, g_loss: 4.6675, D(x): 0.79, D(G(z)): 0.06\n",
      "Epoch [49/200], Step [400/600], d_loss: 0.4383, g_loss: 2.5280, D(x): 0.87, D(G(z)): 0.14\n",
      "Epoch [49/200], Step [600/600], d_loss: 0.3801, g_loss: 3.1237, D(x): 0.90, D(G(z)): 0.15\n",
      "Epoch [50/200], Step [200/600], d_loss: 0.4211, g_loss: 2.4641, D(x): 0.87, D(G(z)): 0.15\n",
      "Epoch [50/200], Step [400/600], d_loss: 0.4945, g_loss: 2.9362, D(x): 0.83, D(G(z)): 0.13\n",
      "Epoch [50/200], Step [600/600], d_loss: 0.5944, g_loss: 1.6500, D(x): 0.84, D(G(z)): 0.25\n",
      "Epoch [51/200], Step [200/600], d_loss: 0.6723, g_loss: 2.1891, D(x): 0.85, D(G(z)): 0.20\n",
      "Epoch [51/200], Step [400/600], d_loss: 0.4368, g_loss: 3.1325, D(x): 0.88, D(G(z)): 0.17\n",
      "Epoch [51/200], Step [600/600], d_loss: 0.5100, g_loss: 3.5606, D(x): 0.81, D(G(z)): 0.14\n",
      "Epoch [52/200], Step [200/600], d_loss: 0.5554, g_loss: 2.4274, D(x): 0.80, D(G(z)): 0.16\n",
      "Epoch [52/200], Step [400/600], d_loss: 0.7192, g_loss: 3.3200, D(x): 0.72, D(G(z)): 0.10\n",
      "Epoch [52/200], Step [600/600], d_loss: 0.6532, g_loss: 2.6346, D(x): 0.79, D(G(z)): 0.19\n",
      "Epoch [53/200], Step [200/600], d_loss: 0.5260, g_loss: 2.3318, D(x): 0.84, D(G(z)): 0.20\n",
      "Epoch [53/200], Step [400/600], d_loss: 0.4742, g_loss: 2.8474, D(x): 0.87, D(G(z)): 0.20\n",
      "Epoch [53/200], Step [600/600], d_loss: 0.6486, g_loss: 2.8849, D(x): 0.81, D(G(z)): 0.23\n",
      "Epoch [54/200], Step [200/600], d_loss: 0.6936, g_loss: 2.7517, D(x): 0.77, D(G(z)): 0.21\n",
      "Epoch [54/200], Step [400/600], d_loss: 0.5709, g_loss: 2.6672, D(x): 0.81, D(G(z)): 0.19\n",
      "Epoch [54/200], Step [600/600], d_loss: 0.7154, g_loss: 2.7180, D(x): 0.81, D(G(z)): 0.27\n",
      "Epoch [55/200], Step [200/600], d_loss: 0.7743, g_loss: 2.2105, D(x): 0.68, D(G(z)): 0.13\n",
      "Epoch [55/200], Step [400/600], d_loss: 0.7419, g_loss: 2.5492, D(x): 0.74, D(G(z)): 0.12\n",
      "Epoch [55/200], Step [600/600], d_loss: 0.5907, g_loss: 1.8577, D(x): 0.84, D(G(z)): 0.22\n",
      "Epoch [56/200], Step [200/600], d_loss: 0.5441, g_loss: 2.5372, D(x): 0.81, D(G(z)): 0.18\n",
      "Epoch [56/200], Step [400/600], d_loss: 0.3975, g_loss: 3.1364, D(x): 0.86, D(G(z)): 0.15\n",
      "Epoch [56/200], Step [600/600], d_loss: 0.7206, g_loss: 2.3274, D(x): 0.90, D(G(z)): 0.33\n",
      "Epoch [57/200], Step [200/600], d_loss: 0.6220, g_loss: 2.9386, D(x): 0.82, D(G(z)): 0.20\n",
      "Epoch [57/200], Step [400/600], d_loss: 0.7227, g_loss: 2.7643, D(x): 0.72, D(G(z)): 0.11\n",
      "Epoch [57/200], Step [600/600], d_loss: 0.7755, g_loss: 2.6303, D(x): 0.73, D(G(z)): 0.20\n",
      "Epoch [58/200], Step [200/600], d_loss: 0.6050, g_loss: 2.9513, D(x): 0.79, D(G(z)): 0.16\n",
      "Epoch [58/200], Step [400/600], d_loss: 0.6472, g_loss: 2.8523, D(x): 0.84, D(G(z)): 0.25\n",
      "Epoch [58/200], Step [600/600], d_loss: 0.7058, g_loss: 2.5182, D(x): 0.75, D(G(z)): 0.13\n",
      "Epoch [59/200], Step [200/600], d_loss: 0.4839, g_loss: 2.7374, D(x): 0.85, D(G(z)): 0.18\n",
      "Epoch [59/200], Step [400/600], d_loss: 0.3969, g_loss: 2.2377, D(x): 0.91, D(G(z)): 0.18\n",
      "Epoch [59/200], Step [600/600], d_loss: 0.7680, g_loss: 2.9719, D(x): 0.77, D(G(z)): 0.21\n",
      "Epoch [60/200], Step [200/600], d_loss: 0.4864, g_loss: 3.6295, D(x): 0.84, D(G(z)): 0.16\n",
      "Epoch [60/200], Step [400/600], d_loss: 0.5635, g_loss: 2.9574, D(x): 0.80, D(G(z)): 0.16\n",
      "Epoch [60/200], Step [600/600], d_loss: 0.7307, g_loss: 2.4101, D(x): 0.80, D(G(z)): 0.26\n",
      "Epoch [61/200], Step [200/600], d_loss: 0.7175, g_loss: 2.6296, D(x): 0.80, D(G(z)): 0.23\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [61/200], Step [400/600], d_loss: 0.6200, g_loss: 2.3348, D(x): 0.82, D(G(z)): 0.21\n",
      "Epoch [61/200], Step [600/600], d_loss: 0.5158, g_loss: 3.5530, D(x): 0.85, D(G(z)): 0.18\n",
      "Epoch [62/200], Step [200/600], d_loss: 0.5863, g_loss: 2.4659, D(x): 0.80, D(G(z)): 0.18\n",
      "Epoch [62/200], Step [400/600], d_loss: 0.6357, g_loss: 2.1570, D(x): 0.82, D(G(z)): 0.26\n",
      "Epoch [62/200], Step [600/600], d_loss: 0.9402, g_loss: 1.7355, D(x): 0.64, D(G(z)): 0.17\n",
      "Epoch [63/200], Step [200/600], d_loss: 0.6757, g_loss: 2.4212, D(x): 0.82, D(G(z)): 0.25\n",
      "Epoch [63/200], Step [400/600], d_loss: 0.7480, g_loss: 1.2888, D(x): 0.81, D(G(z)): 0.31\n",
      "Epoch [63/200], Step [600/600], d_loss: 0.6397, g_loss: 2.1903, D(x): 0.83, D(G(z)): 0.25\n",
      "Epoch [64/200], Step [200/600], d_loss: 0.7664, g_loss: 2.6498, D(x): 0.74, D(G(z)): 0.19\n",
      "Epoch [64/200], Step [400/600], d_loss: 0.8730, g_loss: 1.7722, D(x): 0.65, D(G(z)): 0.20\n",
      "Epoch [64/200], Step [600/600], d_loss: 0.8398, g_loss: 2.2798, D(x): 0.72, D(G(z)): 0.24\n",
      "Epoch [65/200], Step [200/600], d_loss: 0.5963, g_loss: 2.7325, D(x): 0.80, D(G(z)): 0.20\n",
      "Epoch [65/200], Step [400/600], d_loss: 0.6750, g_loss: 1.9369, D(x): 0.74, D(G(z)): 0.19\n",
      "Epoch [65/200], Step [600/600], d_loss: 0.7513, g_loss: 2.9481, D(x): 0.74, D(G(z)): 0.19\n",
      "Epoch [66/200], Step [200/600], d_loss: 0.5983, g_loss: 2.6595, D(x): 0.76, D(G(z)): 0.15\n",
      "Epoch [66/200], Step [400/600], d_loss: 0.6047, g_loss: 2.0778, D(x): 0.89, D(G(z)): 0.31\n",
      "Epoch [66/200], Step [600/600], d_loss: 0.8349, g_loss: 1.8036, D(x): 0.82, D(G(z)): 0.35\n",
      "Epoch [67/200], Step [200/600], d_loss: 0.6427, g_loss: 2.4861, D(x): 0.73, D(G(z)): 0.09\n",
      "Epoch [67/200], Step [400/600], d_loss: 0.6694, g_loss: 1.4097, D(x): 0.80, D(G(z)): 0.25\n",
      "Epoch [67/200], Step [600/600], d_loss: 0.9480, g_loss: 1.7154, D(x): 0.78, D(G(z)): 0.37\n",
      "Epoch [68/200], Step [200/600], d_loss: 0.9072, g_loss: 1.4193, D(x): 0.78, D(G(z)): 0.36\n",
      "Epoch [68/200], Step [400/600], d_loss: 0.8977, g_loss: 1.8737, D(x): 0.69, D(G(z)): 0.23\n",
      "Epoch [68/200], Step [600/600], d_loss: 0.5208, g_loss: 2.3383, D(x): 0.78, D(G(z)): 0.15\n",
      "Epoch [69/200], Step [200/600], d_loss: 0.6262, g_loss: 3.1761, D(x): 0.80, D(G(z)): 0.20\n",
      "Epoch [69/200], Step [400/600], d_loss: 0.7930, g_loss: 2.2145, D(x): 0.84, D(G(z)): 0.33\n",
      "Epoch [69/200], Step [600/600], d_loss: 0.4671, g_loss: 2.4153, D(x): 0.82, D(G(z)): 0.18\n",
      "Epoch [70/200], Step [200/600], d_loss: 0.5807, g_loss: 2.6639, D(x): 0.84, D(G(z)): 0.24\n",
      "Epoch [70/200], Step [400/600], d_loss: 0.5008, g_loss: 2.5593, D(x): 0.86, D(G(z)): 0.21\n",
      "Epoch [70/200], Step [600/600], d_loss: 0.7563, g_loss: 2.6533, D(x): 0.72, D(G(z)): 0.14\n",
      "Epoch [71/200], Step [200/600], d_loss: 0.5698, g_loss: 2.2696, D(x): 0.80, D(G(z)): 0.19\n",
      "Epoch [71/200], Step [400/600], d_loss: 0.6917, g_loss: 1.4666, D(x): 0.86, D(G(z)): 0.30\n",
      "Epoch [71/200], Step [600/600], d_loss: 0.5820, g_loss: 2.0121, D(x): 0.84, D(G(z)): 0.23\n",
      "Epoch [72/200], Step [200/600], d_loss: 0.6860, g_loss: 2.1966, D(x): 0.85, D(G(z)): 0.30\n",
      "Epoch [72/200], Step [400/600], d_loss: 0.6585, g_loss: 1.9139, D(x): 0.78, D(G(z)): 0.24\n",
      "Epoch [72/200], Step [600/600], d_loss: 0.4685, g_loss: 2.2340, D(x): 0.84, D(G(z)): 0.17\n",
      "Epoch [73/200], Step [200/600], d_loss: 0.7853, g_loss: 2.4416, D(x): 0.82, D(G(z)): 0.34\n",
      "Epoch [73/200], Step [400/600], d_loss: 0.5945, g_loss: 2.1145, D(x): 0.76, D(G(z)): 0.16\n",
      "Epoch [73/200], Step [600/600], d_loss: 0.7286, g_loss: 2.4012, D(x): 0.77, D(G(z)): 0.25\n",
      "Epoch [74/200], Step [200/600], d_loss: 0.6728, g_loss: 2.6296, D(x): 0.73, D(G(z)): 0.14\n",
      "Epoch [74/200], Step [400/600], d_loss: 0.7110, g_loss: 2.2928, D(x): 0.76, D(G(z)): 0.22\n",
      "Epoch [74/200], Step [600/600], d_loss: 0.7143, g_loss: 2.1049, D(x): 0.76, D(G(z)): 0.20\n",
      "Epoch [75/200], Step [200/600], d_loss: 0.7783, g_loss: 1.9121, D(x): 0.69, D(G(z)): 0.19\n",
      "Epoch [75/200], Step [400/600], d_loss: 0.6567, g_loss: 2.6962, D(x): 0.75, D(G(z)): 0.17\n",
      "Epoch [75/200], Step [600/600], d_loss: 0.7337, g_loss: 2.4117, D(x): 0.79, D(G(z)): 0.27\n",
      "Epoch [76/200], Step [200/600], d_loss: 0.8599, g_loss: 1.6522, D(x): 0.74, D(G(z)): 0.28\n",
      "Epoch [76/200], Step [400/600], d_loss: 0.7120, g_loss: 1.9724, D(x): 0.77, D(G(z)): 0.26\n",
      "Epoch [76/200], Step [600/600], d_loss: 0.6135, g_loss: 2.2863, D(x): 0.74, D(G(z)): 0.15\n",
      "Epoch [77/200], Step [200/600], d_loss: 0.5965, g_loss: 1.7071, D(x): 0.80, D(G(z)): 0.21\n",
      "Epoch [77/200], Step [400/600], d_loss: 0.6990, g_loss: 2.0213, D(x): 0.74, D(G(z)): 0.18\n",
      "Epoch [77/200], Step [600/600], d_loss: 0.7102, g_loss: 2.5243, D(x): 0.78, D(G(z)): 0.25\n",
      "Epoch [78/200], Step [200/600], d_loss: 0.7917, g_loss: 2.3578, D(x): 0.69, D(G(z)): 0.14\n",
      "Epoch [78/200], Step [400/600], d_loss: 0.8156, g_loss: 1.3992, D(x): 0.77, D(G(z)): 0.27\n",
      "Epoch [78/200], Step [600/600], d_loss: 0.6875, g_loss: 1.8091, D(x): 0.80, D(G(z)): 0.28\n",
      "Epoch [79/200], Step [200/600], d_loss: 0.8633, g_loss: 2.1945, D(x): 0.78, D(G(z)): 0.30\n",
      "Epoch [79/200], Step [400/600], d_loss: 0.7696, g_loss: 1.2860, D(x): 0.76, D(G(z)): 0.25\n",
      "Epoch [79/200], Step [600/600], d_loss: 0.5577, g_loss: 2.2968, D(x): 0.76, D(G(z)): 0.16\n",
      "Epoch [80/200], Step [200/600], d_loss: 0.8188, g_loss: 1.7694, D(x): 0.83, D(G(z)): 0.35\n",
      "Epoch [80/200], Step [400/600], d_loss: 0.7077, g_loss: 2.9644, D(x): 0.75, D(G(z)): 0.20\n",
      "Epoch [80/200], Step [600/600], d_loss: 0.7343, g_loss: 1.5785, D(x): 0.75, D(G(z)): 0.27\n",
      "Epoch [81/200], Step [200/600], d_loss: 0.6692, g_loss: 2.4767, D(x): 0.76, D(G(z)): 0.18\n",
      "Epoch [81/200], Step [400/600], d_loss: 0.8719, g_loss: 1.8676, D(x): 0.80, D(G(z)): 0.35\n",
      "Epoch [81/200], Step [600/600], d_loss: 0.6879, g_loss: 1.8102, D(x): 0.77, D(G(z)): 0.27\n",
      "Epoch [82/200], Step [200/600], d_loss: 0.6435, g_loss: 2.2013, D(x): 0.78, D(G(z)): 0.23\n",
      "Epoch [82/200], Step [400/600], d_loss: 0.7649, g_loss: 1.7788, D(x): 0.68, D(G(z)): 0.16\n",
      "Epoch [82/200], Step [600/600], d_loss: 0.9290, g_loss: 2.1136, D(x): 0.69, D(G(z)): 0.27\n",
      "Epoch [83/200], Step [200/600], d_loss: 0.7497, g_loss: 1.5087, D(x): 0.79, D(G(z)): 0.28\n",
      "Epoch [83/200], Step [400/600], d_loss: 0.9080, g_loss: 1.9580, D(x): 0.63, D(G(z)): 0.17\n",
      "Epoch [83/200], Step [600/600], d_loss: 0.7709, g_loss: 1.6399, D(x): 0.72, D(G(z)): 0.23\n",
      "Epoch [84/200], Step [200/600], d_loss: 0.6749, g_loss: 2.1128, D(x): 0.78, D(G(z)): 0.21\n",
      "Epoch [84/200], Step [400/600], d_loss: 0.6612, g_loss: 2.2320, D(x): 0.76, D(G(z)): 0.18\n",
      "Epoch [84/200], Step [600/600], d_loss: 0.7010, g_loss: 2.2944, D(x): 0.72, D(G(z)): 0.18\n",
      "Epoch [85/200], Step [200/600], d_loss: 0.7291, g_loss: 1.8070, D(x): 0.80, D(G(z)): 0.29\n",
      "Epoch [85/200], Step [400/600], d_loss: 0.6585, g_loss: 1.9564, D(x): 0.83, D(G(z)): 0.27\n",
      "Epoch [85/200], Step [600/600], d_loss: 0.8332, g_loss: 2.4110, D(x): 0.66, D(G(z)): 0.13\n",
      "Epoch [86/200], Step [200/600], d_loss: 0.8586, g_loss: 2.2019, D(x): 0.75, D(G(z)): 0.28\n",
      "Epoch [86/200], Step [400/600], d_loss: 0.8093, g_loss: 1.9923, D(x): 0.79, D(G(z)): 0.31\n",
      "Epoch [86/200], Step [600/600], d_loss: 0.7768, g_loss: 2.2331, D(x): 0.73, D(G(z)): 0.19\n",
      "Epoch [87/200], Step [200/600], d_loss: 0.8485, g_loss: 1.8710, D(x): 0.68, D(G(z)): 0.21\n",
      "Epoch [87/200], Step [400/600], d_loss: 0.9168, g_loss: 1.8379, D(x): 0.71, D(G(z)): 0.26\n",
      "Epoch [87/200], Step [600/600], d_loss: 0.8716, g_loss: 2.1302, D(x): 0.69, D(G(z)): 0.19\n",
      "Epoch [88/200], Step [200/600], d_loss: 0.6641, g_loss: 2.0850, D(x): 0.74, D(G(z)): 0.17\n",
      "Epoch [88/200], Step [400/600], d_loss: 0.9673, g_loss: 2.1370, D(x): 0.67, D(G(z)): 0.27\n",
      "Epoch [88/200], Step [600/600], d_loss: 0.8442, g_loss: 2.0606, D(x): 0.72, D(G(z)): 0.25\n",
      "Epoch [89/200], Step [200/600], d_loss: 0.7895, g_loss: 2.0696, D(x): 0.69, D(G(z)): 0.20\n",
      "Epoch [89/200], Step [400/600], d_loss: 0.7831, g_loss: 1.5304, D(x): 0.79, D(G(z)): 0.30\n",
      "Epoch [89/200], Step [600/600], d_loss: 0.8764, g_loss: 2.1055, D(x): 0.69, D(G(z)): 0.19\n",
      "Epoch [90/200], Step [200/600], d_loss: 0.8084, g_loss: 1.9165, D(x): 0.73, D(G(z)): 0.26\n",
      "Epoch [90/200], Step [400/600], d_loss: 0.7596, g_loss: 2.1241, D(x): 0.77, D(G(z)): 0.25\n",
      "Epoch [90/200], Step [600/600], d_loss: 0.8762, g_loss: 2.1363, D(x): 0.71, D(G(z)): 0.23\n",
      "Epoch [91/200], Step [200/600], d_loss: 0.7228, g_loss: 2.1842, D(x): 0.81, D(G(z)): 0.31\n",
      "Epoch [91/200], Step [400/600], d_loss: 0.7681, g_loss: 1.6620, D(x): 0.74, D(G(z)): 0.25\n",
      "Epoch [91/200], Step [600/600], d_loss: 0.6135, g_loss: 1.6571, D(x): 0.85, D(G(z)): 0.28\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [92/200], Step [200/600], d_loss: 0.7628, g_loss: 1.5239, D(x): 0.76, D(G(z)): 0.27\n",
      "Epoch [92/200], Step [400/600], d_loss: 0.7792, g_loss: 1.7071, D(x): 0.83, D(G(z)): 0.32\n",
      "Epoch [92/200], Step [600/600], d_loss: 0.8917, g_loss: 2.5310, D(x): 0.78, D(G(z)): 0.29\n",
      "Epoch [93/200], Step [200/600], d_loss: 0.8364, g_loss: 1.5014, D(x): 0.71, D(G(z)): 0.24\n",
      "Epoch [93/200], Step [400/600], d_loss: 0.8234, g_loss: 1.6946, D(x): 0.86, D(G(z)): 0.39\n",
      "Epoch [93/200], Step [600/600], d_loss: 0.7645, g_loss: 2.0399, D(x): 0.78, D(G(z)): 0.28\n",
      "Epoch [94/200], Step [200/600], d_loss: 0.9802, g_loss: 2.0514, D(x): 0.69, D(G(z)): 0.32\n",
      "Epoch [94/200], Step [400/600], d_loss: 0.7922, g_loss: 1.4600, D(x): 0.81, D(G(z)): 0.32\n",
      "Epoch [94/200], Step [600/600], d_loss: 0.9615, g_loss: 2.0135, D(x): 0.77, D(G(z)): 0.37\n",
      "Epoch [95/200], Step [200/600], d_loss: 0.7036, g_loss: 1.9992, D(x): 0.77, D(G(z)): 0.26\n",
      "Epoch [95/200], Step [400/600], d_loss: 0.5897, g_loss: 2.4501, D(x): 0.79, D(G(z)): 0.20\n",
      "Epoch [95/200], Step [600/600], d_loss: 0.6886, g_loss: 2.0577, D(x): 0.80, D(G(z)): 0.28\n",
      "Epoch [96/200], Step [200/600], d_loss: 0.6460, g_loss: 2.1449, D(x): 0.76, D(G(z)): 0.21\n",
      "Epoch [96/200], Step [400/600], d_loss: 0.9057, g_loss: 1.3536, D(x): 0.77, D(G(z)): 0.34\n",
      "Epoch [96/200], Step [600/600], d_loss: 0.6731, g_loss: 2.0859, D(x): 0.79, D(G(z)): 0.26\n",
      "Epoch [97/200], Step [200/600], d_loss: 0.6771, g_loss: 2.6207, D(x): 0.79, D(G(z)): 0.26\n",
      "Epoch [97/200], Step [400/600], d_loss: 0.8668, g_loss: 2.3355, D(x): 0.74, D(G(z)): 0.28\n",
      "Epoch [97/200], Step [600/600], d_loss: 0.9677, g_loss: 1.9097, D(x): 0.71, D(G(z)): 0.28\n",
      "Epoch [98/200], Step [200/600], d_loss: 0.8367, g_loss: 1.9111, D(x): 0.83, D(G(z)): 0.36\n",
      "Epoch [98/200], Step [400/600], d_loss: 0.5193, g_loss: 2.0855, D(x): 0.82, D(G(z)): 0.20\n",
      "Epoch [98/200], Step [600/600], d_loss: 0.6239, g_loss: 1.5828, D(x): 0.77, D(G(z)): 0.22\n",
      "Epoch [99/200], Step [200/600], d_loss: 0.9080, g_loss: 1.6405, D(x): 0.72, D(G(z)): 0.28\n",
      "Epoch [99/200], Step [400/600], d_loss: 0.8803, g_loss: 1.6185, D(x): 0.71, D(G(z)): 0.26\n",
      "Epoch [99/200], Step [600/600], d_loss: 0.9656, g_loss: 1.7611, D(x): 0.67, D(G(z)): 0.28\n",
      "Epoch [100/200], Step [200/600], d_loss: 0.7175, g_loss: 1.8382, D(x): 0.77, D(G(z)): 0.26\n",
      "Epoch [100/200], Step [400/600], d_loss: 0.8561, g_loss: 2.2129, D(x): 0.77, D(G(z)): 0.32\n",
      "Epoch [100/200], Step [600/600], d_loss: 0.7426, g_loss: 1.9038, D(x): 0.77, D(G(z)): 0.27\n",
      "Epoch [101/200], Step [200/600], d_loss: 0.7903, g_loss: 2.1457, D(x): 0.71, D(G(z)): 0.22\n",
      "Epoch [101/200], Step [400/600], d_loss: 0.8427, g_loss: 2.0449, D(x): 0.80, D(G(z)): 0.36\n",
      "Epoch [101/200], Step [600/600], d_loss: 0.7230, g_loss: 1.8854, D(x): 0.76, D(G(z)): 0.23\n",
      "Epoch [102/200], Step [200/600], d_loss: 0.6405, g_loss: 2.4341, D(x): 0.77, D(G(z)): 0.21\n",
      "Epoch [102/200], Step [400/600], d_loss: 0.6388, g_loss: 1.8671, D(x): 0.81, D(G(z)): 0.27\n",
      "Epoch [102/200], Step [600/600], d_loss: 0.7064, g_loss: 1.9194, D(x): 0.79, D(G(z)): 0.25\n",
      "Epoch [103/200], Step [200/600], d_loss: 1.0506, g_loss: 1.6128, D(x): 0.69, D(G(z)): 0.33\n",
      "Epoch [103/200], Step [400/600], d_loss: 0.9198, g_loss: 1.5693, D(x): 0.72, D(G(z)): 0.32\n",
      "Epoch [103/200], Step [600/600], d_loss: 0.8036, g_loss: 2.0695, D(x): 0.75, D(G(z)): 0.27\n",
      "Epoch [104/200], Step [200/600], d_loss: 0.9892, g_loss: 1.8488, D(x): 0.73, D(G(z)): 0.30\n",
      "Epoch [104/200], Step [400/600], d_loss: 0.6410, g_loss: 1.9683, D(x): 0.82, D(G(z)): 0.28\n",
      "Epoch [104/200], Step [600/600], d_loss: 0.7068, g_loss: 2.0918, D(x): 0.78, D(G(z)): 0.26\n",
      "Epoch [105/200], Step [200/600], d_loss: 0.8337, g_loss: 1.5975, D(x): 0.72, D(G(z)): 0.27\n",
      "Epoch [105/200], Step [400/600], d_loss: 0.9054, g_loss: 1.5970, D(x): 0.71, D(G(z)): 0.29\n",
      "Epoch [105/200], Step [600/600], d_loss: 0.8667, g_loss: 2.2215, D(x): 0.64, D(G(z)): 0.18\n",
      "Epoch [106/200], Step [200/600], d_loss: 0.9465, g_loss: 1.9910, D(x): 0.68, D(G(z)): 0.27\n",
      "Epoch [106/200], Step [400/600], d_loss: 0.9180, g_loss: 1.5762, D(x): 0.68, D(G(z)): 0.23\n",
      "Epoch [106/200], Step [600/600], d_loss: 0.9988, g_loss: 1.7998, D(x): 0.64, D(G(z)): 0.27\n",
      "Epoch [107/200], Step [200/600], d_loss: 0.9475, g_loss: 1.4875, D(x): 0.71, D(G(z)): 0.30\n",
      "Epoch [107/200], Step [400/600], d_loss: 0.8787, g_loss: 1.6200, D(x): 0.76, D(G(z)): 0.31\n",
      "Epoch [107/200], Step [600/600], d_loss: 0.6719, g_loss: 1.7775, D(x): 0.87, D(G(z)): 0.33\n",
      "Epoch [108/200], Step [200/600], d_loss: 0.6798, g_loss: 2.2678, D(x): 0.74, D(G(z)): 0.21\n",
      "Epoch [108/200], Step [400/600], d_loss: 0.5707, g_loss: 2.4277, D(x): 0.83, D(G(z)): 0.24\n",
      "Epoch [108/200], Step [600/600], d_loss: 0.7911, g_loss: 1.7461, D(x): 0.72, D(G(z)): 0.24\n",
      "Epoch [109/200], Step [200/600], d_loss: 0.8168, g_loss: 1.5900, D(x): 0.75, D(G(z)): 0.28\n",
      "Epoch [109/200], Step [400/600], d_loss: 1.0904, g_loss: 1.7859, D(x): 0.59, D(G(z)): 0.25\n",
      "Epoch [109/200], Step [600/600], d_loss: 0.9145, g_loss: 1.7350, D(x): 0.71, D(G(z)): 0.28\n",
      "Epoch [110/200], Step [200/600], d_loss: 0.8895, g_loss: 2.0971, D(x): 0.66, D(G(z)): 0.22\n",
      "Epoch [110/200], Step [400/600], d_loss: 0.8065, g_loss: 1.7983, D(x): 0.74, D(G(z)): 0.25\n",
      "Epoch [110/200], Step [600/600], d_loss: 0.9204, g_loss: 1.7190, D(x): 0.67, D(G(z)): 0.24\n",
      "Epoch [111/200], Step [200/600], d_loss: 0.7387, g_loss: 1.9608, D(x): 0.80, D(G(z)): 0.32\n",
      "Epoch [111/200], Step [400/600], d_loss: 0.9751, g_loss: 1.7726, D(x): 0.67, D(G(z)): 0.28\n",
      "Epoch [111/200], Step [600/600], d_loss: 0.9101, g_loss: 1.4694, D(x): 0.69, D(G(z)): 0.24\n",
      "Epoch [112/200], Step [200/600], d_loss: 0.9957, g_loss: 1.5796, D(x): 0.68, D(G(z)): 0.32\n",
      "Epoch [112/200], Step [400/600], d_loss: 0.7799, g_loss: 1.6806, D(x): 0.75, D(G(z)): 0.24\n",
      "Epoch [112/200], Step [600/600], d_loss: 0.8002, g_loss: 1.7186, D(x): 0.75, D(G(z)): 0.29\n",
      "Epoch [113/200], Step [200/600], d_loss: 0.6957, g_loss: 1.5770, D(x): 0.80, D(G(z)): 0.28\n",
      "Epoch [113/200], Step [400/600], d_loss: 0.8494, g_loss: 2.1343, D(x): 0.69, D(G(z)): 0.26\n",
      "Epoch [113/200], Step [600/600], d_loss: 0.7712, g_loss: 1.5013, D(x): 0.78, D(G(z)): 0.30\n",
      "Epoch [114/200], Step [200/600], d_loss: 0.9358, g_loss: 1.9277, D(x): 0.68, D(G(z)): 0.28\n",
      "Epoch [114/200], Step [400/600], d_loss: 0.7634, g_loss: 1.9580, D(x): 0.77, D(G(z)): 0.28\n",
      "Epoch [114/200], Step [600/600], d_loss: 0.9905, g_loss: 1.4997, D(x): 0.72, D(G(z)): 0.35\n",
      "Epoch [115/200], Step [200/600], d_loss: 0.9167, g_loss: 1.9605, D(x): 0.72, D(G(z)): 0.31\n",
      "Epoch [115/200], Step [400/600], d_loss: 0.9794, g_loss: 1.8300, D(x): 0.62, D(G(z)): 0.20\n",
      "Epoch [115/200], Step [600/600], d_loss: 0.9296, g_loss: 1.5994, D(x): 0.69, D(G(z)): 0.30\n",
      "Epoch [116/200], Step [200/600], d_loss: 0.8124, g_loss: 1.3363, D(x): 0.73, D(G(z)): 0.25\n",
      "Epoch [116/200], Step [400/600], d_loss: 0.8847, g_loss: 1.9863, D(x): 0.71, D(G(z)): 0.28\n",
      "Epoch [116/200], Step [600/600], d_loss: 0.7383, g_loss: 1.6725, D(x): 0.80, D(G(z)): 0.30\n",
      "Epoch [117/200], Step [200/600], d_loss: 1.0191, g_loss: 2.1034, D(x): 0.62, D(G(z)): 0.27\n",
      "Epoch [117/200], Step [400/600], d_loss: 0.7721, g_loss: 2.1328, D(x): 0.79, D(G(z)): 0.30\n",
      "Epoch [117/200], Step [600/600], d_loss: 0.9076, g_loss: 1.9843, D(x): 0.69, D(G(z)): 0.25\n",
      "Epoch [118/200], Step [200/600], d_loss: 0.9453, g_loss: 1.3866, D(x): 0.77, D(G(z)): 0.38\n",
      "Epoch [118/200], Step [400/600], d_loss: 0.7890, g_loss: 1.7791, D(x): 0.75, D(G(z)): 0.29\n",
      "Epoch [118/200], Step [600/600], d_loss: 0.7840, g_loss: 2.0555, D(x): 0.74, D(G(z)): 0.25\n",
      "Epoch [119/200], Step [200/600], d_loss: 0.7800, g_loss: 1.7981, D(x): 0.71, D(G(z)): 0.22\n",
      "Epoch [119/200], Step [400/600], d_loss: 0.7612, g_loss: 1.8806, D(x): 0.74, D(G(z)): 0.28\n",
      "Epoch [119/200], Step [600/600], d_loss: 0.8036, g_loss: 1.5423, D(x): 0.79, D(G(z)): 0.31\n",
      "Epoch [120/200], Step [200/600], d_loss: 0.8661, g_loss: 1.5831, D(x): 0.72, D(G(z)): 0.27\n",
      "Epoch [120/200], Step [400/600], d_loss: 0.7570, g_loss: 1.5613, D(x): 0.72, D(G(z)): 0.22\n",
      "Epoch [120/200], Step [600/600], d_loss: 0.8878, g_loss: 1.7027, D(x): 0.73, D(G(z)): 0.32\n",
      "Epoch [121/200], Step [200/600], d_loss: 0.8097, g_loss: 2.0738, D(x): 0.74, D(G(z)): 0.30\n",
      "Epoch [121/200], Step [400/600], d_loss: 0.7595, g_loss: 1.5835, D(x): 0.80, D(G(z)): 0.33\n",
      "Epoch [121/200], Step [600/600], d_loss: 0.9542, g_loss: 1.8136, D(x): 0.69, D(G(z)): 0.31\n",
      "Epoch [122/200], Step [200/600], d_loss: 0.8954, g_loss: 1.2702, D(x): 0.65, D(G(z)): 0.24\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [122/200], Step [400/600], d_loss: 0.8493, g_loss: 1.7894, D(x): 0.68, D(G(z)): 0.23\n",
      "Epoch [122/200], Step [600/600], d_loss: 0.9246, g_loss: 1.2077, D(x): 0.83, D(G(z)): 0.40\n",
      "Epoch [123/200], Step [200/600], d_loss: 0.7429, g_loss: 1.5110, D(x): 0.82, D(G(z)): 0.32\n",
      "Epoch [123/200], Step [400/600], d_loss: 1.0382, g_loss: 1.4690, D(x): 0.64, D(G(z)): 0.29\n",
      "Epoch [123/200], Step [600/600], d_loss: 0.8042, g_loss: 2.0124, D(x): 0.76, D(G(z)): 0.30\n",
      "Epoch [124/200], Step [200/600], d_loss: 1.4137, g_loss: 1.4112, D(x): 0.52, D(G(z)): 0.33\n",
      "Epoch [124/200], Step [400/600], d_loss: 1.0944, g_loss: 1.5258, D(x): 0.73, D(G(z)): 0.41\n",
      "Epoch [124/200], Step [600/600], d_loss: 0.7289, g_loss: 2.0482, D(x): 0.78, D(G(z)): 0.25\n",
      "Epoch [125/200], Step [200/600], d_loss: 0.8302, g_loss: 1.9241, D(x): 0.66, D(G(z)): 0.22\n",
      "Epoch [125/200], Step [400/600], d_loss: 0.8752, g_loss: 2.1757, D(x): 0.65, D(G(z)): 0.21\n",
      "Epoch [125/200], Step [600/600], d_loss: 0.7393, g_loss: 1.4880, D(x): 0.71, D(G(z)): 0.24\n",
      "Epoch [126/200], Step [200/600], d_loss: 0.8453, g_loss: 1.5642, D(x): 0.68, D(G(z)): 0.22\n",
      "Epoch [126/200], Step [400/600], d_loss: 0.8178, g_loss: 1.5275, D(x): 0.73, D(G(z)): 0.28\n",
      "Epoch [126/200], Step [600/600], d_loss: 0.8444, g_loss: 1.3331, D(x): 0.77, D(G(z)): 0.36\n",
      "Epoch [127/200], Step [200/600], d_loss: 0.9683, g_loss: 1.7904, D(x): 0.63, D(G(z)): 0.26\n",
      "Epoch [127/200], Step [400/600], d_loss: 0.9230, g_loss: 1.3526, D(x): 0.69, D(G(z)): 0.31\n",
      "Epoch [127/200], Step [600/600], d_loss: 0.9593, g_loss: 1.9214, D(x): 0.74, D(G(z)): 0.33\n",
      "Epoch [128/200], Step [200/600], d_loss: 0.7738, g_loss: 1.9004, D(x): 0.71, D(G(z)): 0.25\n",
      "Epoch [128/200], Step [400/600], d_loss: 0.6524, g_loss: 1.6210, D(x): 0.77, D(G(z)): 0.25\n",
      "Epoch [128/200], Step [600/600], d_loss: 0.8507, g_loss: 1.8600, D(x): 0.67, D(G(z)): 0.23\n",
      "Epoch [129/200], Step [200/600], d_loss: 0.7628, g_loss: 2.0202, D(x): 0.74, D(G(z)): 0.25\n",
      "Epoch [129/200], Step [400/600], d_loss: 1.0145, g_loss: 1.7159, D(x): 0.74, D(G(z)): 0.36\n",
      "Epoch [129/200], Step [600/600], d_loss: 0.8922, g_loss: 1.5478, D(x): 0.80, D(G(z)): 0.36\n",
      "Epoch [130/200], Step [200/600], d_loss: 0.8480, g_loss: 1.4989, D(x): 0.77, D(G(z)): 0.32\n",
      "Epoch [130/200], Step [400/600], d_loss: 0.8829, g_loss: 1.3164, D(x): 0.72, D(G(z)): 0.30\n",
      "Epoch [130/200], Step [600/600], d_loss: 0.9256, g_loss: 1.8812, D(x): 0.72, D(G(z)): 0.33\n",
      "Epoch [131/200], Step [200/600], d_loss: 0.9185, g_loss: 1.2054, D(x): 0.73, D(G(z)): 0.34\n",
      "Epoch [131/200], Step [400/600], d_loss: 0.8963, g_loss: 2.0129, D(x): 0.80, D(G(z)): 0.37\n",
      "Epoch [131/200], Step [600/600], d_loss: 0.6872, g_loss: 2.6259, D(x): 0.70, D(G(z)): 0.14\n",
      "Epoch [132/200], Step [200/600], d_loss: 0.9602, g_loss: 1.5978, D(x): 0.67, D(G(z)): 0.27\n",
      "Epoch [132/200], Step [400/600], d_loss: 1.1628, g_loss: 2.2969, D(x): 0.51, D(G(z)): 0.16\n",
      "Epoch [132/200], Step [600/600], d_loss: 0.9941, g_loss: 1.3303, D(x): 0.71, D(G(z)): 0.35\n",
      "Epoch [133/200], Step [200/600], d_loss: 0.8730, g_loss: 1.9300, D(x): 0.78, D(G(z)): 0.35\n",
      "Epoch [133/200], Step [400/600], d_loss: 0.8857, g_loss: 1.7342, D(x): 0.65, D(G(z)): 0.26\n",
      "Epoch [133/200], Step [600/600], d_loss: 0.7772, g_loss: 1.9076, D(x): 0.71, D(G(z)): 0.23\n",
      "Epoch [134/200], Step [200/600], d_loss: 0.7534, g_loss: 1.6637, D(x): 0.79, D(G(z)): 0.31\n",
      "Epoch [134/200], Step [400/600], d_loss: 0.9072, g_loss: 1.7143, D(x): 0.68, D(G(z)): 0.27\n",
      "Epoch [134/200], Step [600/600], d_loss: 0.8606, g_loss: 2.0945, D(x): 0.71, D(G(z)): 0.27\n",
      "Epoch [135/200], Step [200/600], d_loss: 0.7520, g_loss: 1.7837, D(x): 0.70, D(G(z)): 0.20\n",
      "Epoch [135/200], Step [400/600], d_loss: 0.9707, g_loss: 1.5328, D(x): 0.70, D(G(z)): 0.30\n",
      "Epoch [135/200], Step [600/600], d_loss: 0.8795, g_loss: 1.7137, D(x): 0.74, D(G(z)): 0.31\n",
      "Epoch [136/200], Step [200/600], d_loss: 0.8118, g_loss: 1.6202, D(x): 0.76, D(G(z)): 0.31\n",
      "Epoch [136/200], Step [400/600], d_loss: 0.8616, g_loss: 1.7466, D(x): 0.77, D(G(z)): 0.35\n",
      "Epoch [136/200], Step [600/600], d_loss: 0.6555, g_loss: 2.0303, D(x): 0.72, D(G(z)): 0.19\n",
      "Epoch [137/200], Step [200/600], d_loss: 0.9883, g_loss: 1.2089, D(x): 0.70, D(G(z)): 0.33\n",
      "Epoch [137/200], Step [400/600], d_loss: 1.0265, g_loss: 1.6839, D(x): 0.62, D(G(z)): 0.23\n",
      "Epoch [137/200], Step [600/600], d_loss: 1.1200, g_loss: 1.3769, D(x): 0.68, D(G(z)): 0.37\n",
      "Epoch [138/200], Step [200/600], d_loss: 1.0541, g_loss: 1.2769, D(x): 0.67, D(G(z)): 0.32\n",
      "Epoch [138/200], Step [400/600], d_loss: 0.8260, g_loss: 1.4145, D(x): 0.79, D(G(z)): 0.35\n",
      "Epoch [138/200], Step [600/600], d_loss: 1.0071, g_loss: 1.4430, D(x): 0.75, D(G(z)): 0.39\n",
      "Epoch [139/200], Step [200/600], d_loss: 0.8363, g_loss: 2.0657, D(x): 0.65, D(G(z)): 0.18\n",
      "Epoch [139/200], Step [400/600], d_loss: 0.7121, g_loss: 1.9059, D(x): 0.75, D(G(z)): 0.25\n",
      "Epoch [139/200], Step [600/600], d_loss: 0.8608, g_loss: 1.6504, D(x): 0.68, D(G(z)): 0.23\n",
      "Epoch [140/200], Step [200/600], d_loss: 0.7194, g_loss: 1.8999, D(x): 0.78, D(G(z)): 0.24\n",
      "Epoch [140/200], Step [400/600], d_loss: 1.1052, g_loss: 1.4394, D(x): 0.66, D(G(z)): 0.32\n",
      "Epoch [140/200], Step [600/600], d_loss: 0.8694, g_loss: 2.1082, D(x): 0.70, D(G(z)): 0.26\n",
      "Epoch [141/200], Step [200/600], d_loss: 0.6891, g_loss: 1.8407, D(x): 0.72, D(G(z)): 0.22\n",
      "Epoch [141/200], Step [400/600], d_loss: 0.9146, g_loss: 2.1826, D(x): 0.72, D(G(z)): 0.32\n",
      "Epoch [141/200], Step [600/600], d_loss: 0.9469, g_loss: 2.0616, D(x): 0.62, D(G(z)): 0.23\n",
      "Epoch [142/200], Step [200/600], d_loss: 0.9161, g_loss: 1.5274, D(x): 0.72, D(G(z)): 0.31\n",
      "Epoch [142/200], Step [400/600], d_loss: 1.0073, g_loss: 1.6733, D(x): 0.79, D(G(z)): 0.40\n",
      "Epoch [142/200], Step [600/600], d_loss: 0.8203, g_loss: 1.4752, D(x): 0.67, D(G(z)): 0.21\n",
      "Epoch [143/200], Step [200/600], d_loss: 0.9173, g_loss: 1.4718, D(x): 0.75, D(G(z)): 0.31\n",
      "Epoch [143/200], Step [400/600], d_loss: 0.9754, g_loss: 1.9803, D(x): 0.74, D(G(z)): 0.36\n",
      "Epoch [143/200], Step [600/600], d_loss: 0.8451, g_loss: 1.7720, D(x): 0.75, D(G(z)): 0.33\n",
      "Epoch [144/200], Step [200/600], d_loss: 1.0368, g_loss: 1.6241, D(x): 0.60, D(G(z)): 0.22\n",
      "Epoch [144/200], Step [400/600], d_loss: 0.9120, g_loss: 1.5605, D(x): 0.76, D(G(z)): 0.35\n",
      "Epoch [144/200], Step [600/600], d_loss: 0.8590, g_loss: 1.6670, D(x): 0.65, D(G(z)): 0.23\n",
      "Epoch [145/200], Step [200/600], d_loss: 0.7633, g_loss: 2.0794, D(x): 0.71, D(G(z)): 0.24\n",
      "Epoch [145/200], Step [400/600], d_loss: 0.9713, g_loss: 1.8159, D(x): 0.72, D(G(z)): 0.32\n",
      "Epoch [145/200], Step [600/600], d_loss: 0.8311, g_loss: 1.7606, D(x): 0.66, D(G(z)): 0.22\n",
      "Epoch [146/200], Step [200/600], d_loss: 0.9803, g_loss: 1.8420, D(x): 0.70, D(G(z)): 0.33\n",
      "Epoch [146/200], Step [400/600], d_loss: 0.8976, g_loss: 1.4926, D(x): 0.75, D(G(z)): 0.33\n",
      "Epoch [146/200], Step [600/600], d_loss: 0.8279, g_loss: 1.9812, D(x): 0.74, D(G(z)): 0.31\n",
      "Epoch [147/200], Step [200/600], d_loss: 0.8110, g_loss: 2.1233, D(x): 0.74, D(G(z)): 0.29\n",
      "Epoch [147/200], Step [400/600], d_loss: 0.9562, g_loss: 1.5625, D(x): 0.66, D(G(z)): 0.25\n",
      "Epoch [147/200], Step [600/600], d_loss: 0.9462, g_loss: 1.5849, D(x): 0.65, D(G(z)): 0.27\n",
      "Epoch [148/200], Step [200/600], d_loss: 0.8642, g_loss: 1.4148, D(x): 0.69, D(G(z)): 0.29\n",
      "Epoch [148/200], Step [400/600], d_loss: 0.8364, g_loss: 2.0229, D(x): 0.67, D(G(z)): 0.25\n",
      "Epoch [148/200], Step [600/600], d_loss: 0.8943, g_loss: 1.4310, D(x): 0.67, D(G(z)): 0.25\n",
      "Epoch [149/200], Step [200/600], d_loss: 0.9290, g_loss: 1.3553, D(x): 0.77, D(G(z)): 0.37\n",
      "Epoch [149/200], Step [400/600], d_loss: 0.9785, g_loss: 1.8251, D(x): 0.64, D(G(z)): 0.27\n",
      "Epoch [149/200], Step [600/600], d_loss: 0.9411, g_loss: 1.4558, D(x): 0.71, D(G(z)): 0.33\n",
      "Epoch [150/200], Step [200/600], d_loss: 0.8689, g_loss: 1.5040, D(x): 0.69, D(G(z)): 0.31\n",
      "Epoch [150/200], Step [400/600], d_loss: 1.0492, g_loss: 1.5029, D(x): 0.69, D(G(z)): 0.38\n",
      "Epoch [150/200], Step [600/600], d_loss: 0.7913, g_loss: 1.9372, D(x): 0.76, D(G(z)): 0.27\n",
      "Epoch [151/200], Step [200/600], d_loss: 0.8983, g_loss: 1.7435, D(x): 0.78, D(G(z)): 0.38\n",
      "Epoch [151/200], Step [400/600], d_loss: 0.9075, g_loss: 1.3713, D(x): 0.72, D(G(z)): 0.33\n",
      "Epoch [151/200], Step [600/600], d_loss: 0.8312, g_loss: 1.9594, D(x): 0.68, D(G(z)): 0.24\n",
      "Epoch [152/200], Step [200/600], d_loss: 0.9573, g_loss: 1.4155, D(x): 0.64, D(G(z)): 0.23\n",
      "Epoch [152/200], Step [400/600], d_loss: 0.8887, g_loss: 1.6704, D(x): 0.70, D(G(z)): 0.30\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [152/200], Step [600/600], d_loss: 0.8673, g_loss: 1.6301, D(x): 0.79, D(G(z)): 0.37\n",
      "Epoch [153/200], Step [200/600], d_loss: 0.8226, g_loss: 1.7093, D(x): 0.73, D(G(z)): 0.27\n",
      "Epoch [153/200], Step [400/600], d_loss: 0.8285, g_loss: 2.2510, D(x): 0.67, D(G(z)): 0.21\n",
      "Epoch [153/200], Step [600/600], d_loss: 0.9422, g_loss: 1.3017, D(x): 0.66, D(G(z)): 0.27\n",
      "Epoch [154/200], Step [200/600], d_loss: 0.9616, g_loss: 1.5968, D(x): 0.72, D(G(z)): 0.36\n",
      "Epoch [154/200], Step [400/600], d_loss: 1.0168, g_loss: 1.4837, D(x): 0.67, D(G(z)): 0.32\n",
      "Epoch [154/200], Step [600/600], d_loss: 0.9104, g_loss: 1.7273, D(x): 0.62, D(G(z)): 0.23\n",
      "Epoch [155/200], Step [200/600], d_loss: 0.9133, g_loss: 1.4207, D(x): 0.72, D(G(z)): 0.33\n",
      "Epoch [155/200], Step [400/600], d_loss: 0.8679, g_loss: 1.6517, D(x): 0.72, D(G(z)): 0.33\n",
      "Epoch [155/200], Step [600/600], d_loss: 0.9147, g_loss: 1.6104, D(x): 0.76, D(G(z)): 0.32\n",
      "Epoch [156/200], Step [200/600], d_loss: 0.8696, g_loss: 1.7552, D(x): 0.70, D(G(z)): 0.28\n",
      "Epoch [156/200], Step [400/600], d_loss: 1.0251, g_loss: 1.3225, D(x): 0.76, D(G(z)): 0.40\n",
      "Epoch [156/200], Step [600/600], d_loss: 1.2765, g_loss: 1.4734, D(x): 0.60, D(G(z)): 0.34\n",
      "Epoch [157/200], Step [200/600], d_loss: 0.9434, g_loss: 1.2065, D(x): 0.72, D(G(z)): 0.33\n",
      "Epoch [157/200], Step [400/600], d_loss: 0.8901, g_loss: 1.3083, D(x): 0.68, D(G(z)): 0.29\n",
      "Epoch [157/200], Step [600/600], d_loss: 0.7422, g_loss: 1.6269, D(x): 0.74, D(G(z)): 0.28\n",
      "Epoch [158/200], Step [200/600], d_loss: 1.0283, g_loss: 1.5558, D(x): 0.78, D(G(z)): 0.41\n",
      "Epoch [158/200], Step [400/600], d_loss: 1.1020, g_loss: 1.3191, D(x): 0.65, D(G(z)): 0.35\n",
      "Epoch [158/200], Step [600/600], d_loss: 0.8826, g_loss: 2.1021, D(x): 0.68, D(G(z)): 0.24\n",
      "Epoch [159/200], Step [200/600], d_loss: 0.8687, g_loss: 1.7939, D(x): 0.73, D(G(z)): 0.31\n",
      "Epoch [159/200], Step [400/600], d_loss: 0.9150, g_loss: 1.4088, D(x): 0.73, D(G(z)): 0.33\n",
      "Epoch [159/200], Step [600/600], d_loss: 1.0641, g_loss: 1.7972, D(x): 0.65, D(G(z)): 0.33\n",
      "Epoch [160/200], Step [200/600], d_loss: 1.0528, g_loss: 1.9104, D(x): 0.67, D(G(z)): 0.33\n",
      "Epoch [160/200], Step [400/600], d_loss: 0.9245, g_loss: 1.3731, D(x): 0.76, D(G(z)): 0.39\n",
      "Epoch [160/200], Step [600/600], d_loss: 0.8856, g_loss: 1.3394, D(x): 0.66, D(G(z)): 0.25\n",
      "Epoch [161/200], Step [200/600], d_loss: 0.7091, g_loss: 1.8310, D(x): 0.75, D(G(z)): 0.26\n",
      "Epoch [161/200], Step [400/600], d_loss: 0.8680, g_loss: 1.8221, D(x): 0.74, D(G(z)): 0.31\n",
      "Epoch [161/200], Step [600/600], d_loss: 0.7781, g_loss: 1.7874, D(x): 0.73, D(G(z)): 0.28\n",
      "Epoch [162/200], Step [200/600], d_loss: 0.7511, g_loss: 1.9057, D(x): 0.69, D(G(z)): 0.21\n",
      "Epoch [162/200], Step [400/600], d_loss: 0.8118, g_loss: 1.5086, D(x): 0.74, D(G(z)): 0.30\n",
      "Epoch [162/200], Step [600/600], d_loss: 0.9396, g_loss: 1.7096, D(x): 0.66, D(G(z)): 0.30\n",
      "Epoch [163/200], Step [200/600], d_loss: 1.0029, g_loss: 1.3380, D(x): 0.66, D(G(z)): 0.30\n",
      "Epoch [163/200], Step [400/600], d_loss: 0.7748, g_loss: 2.1682, D(x): 0.70, D(G(z)): 0.20\n",
      "Epoch [163/200], Step [600/600], d_loss: 0.9999, g_loss: 1.4234, D(x): 0.64, D(G(z)): 0.30\n",
      "Epoch [164/200], Step [200/600], d_loss: 0.7049, g_loss: 1.4739, D(x): 0.78, D(G(z)): 0.29\n",
      "Epoch [164/200], Step [400/600], d_loss: 0.9729, g_loss: 1.6467, D(x): 0.72, D(G(z)): 0.35\n",
      "Epoch [164/200], Step [600/600], d_loss: 1.1754, g_loss: 1.1212, D(x): 0.61, D(G(z)): 0.32\n",
      "Epoch [165/200], Step [200/600], d_loss: 1.0147, g_loss: 1.5805, D(x): 0.64, D(G(z)): 0.28\n",
      "Epoch [165/200], Step [400/600], d_loss: 1.0088, g_loss: 1.4077, D(x): 0.70, D(G(z)): 0.36\n",
      "Epoch [165/200], Step [600/600], d_loss: 0.8996, g_loss: 1.5173, D(x): 0.65, D(G(z)): 0.22\n",
      "Epoch [166/200], Step [200/600], d_loss: 0.8979, g_loss: 1.5591, D(x): 0.71, D(G(z)): 0.32\n",
      "Epoch [166/200], Step [400/600], d_loss: 0.9411, g_loss: 1.9316, D(x): 0.68, D(G(z)): 0.31\n",
      "Epoch [166/200], Step [600/600], d_loss: 0.8789, g_loss: 1.6792, D(x): 0.63, D(G(z)): 0.21\n",
      "Epoch [167/200], Step [200/600], d_loss: 1.0461, g_loss: 1.4016, D(x): 0.68, D(G(z)): 0.34\n",
      "Epoch [167/200], Step [400/600], d_loss: 0.8590, g_loss: 1.8971, D(x): 0.70, D(G(z)): 0.25\n",
      "Epoch [167/200], Step [600/600], d_loss: 0.8043, g_loss: 1.6131, D(x): 0.75, D(G(z)): 0.31\n",
      "Epoch [168/200], Step [200/600], d_loss: 1.0647, g_loss: 1.3207, D(x): 0.63, D(G(z)): 0.32\n",
      "Epoch [168/200], Step [400/600], d_loss: 0.9460, g_loss: 1.3256, D(x): 0.72, D(G(z)): 0.35\n",
      "Epoch [168/200], Step [600/600], d_loss: 0.9044, g_loss: 1.5686, D(x): 0.71, D(G(z)): 0.32\n",
      "Epoch [169/200], Step [200/600], d_loss: 0.8431, g_loss: 1.6941, D(x): 0.71, D(G(z)): 0.27\n",
      "Epoch [169/200], Step [400/600], d_loss: 1.0535, g_loss: 1.4497, D(x): 0.64, D(G(z)): 0.29\n",
      "Epoch [169/200], Step [600/600], d_loss: 0.9998, g_loss: 1.7255, D(x): 0.69, D(G(z)): 0.32\n",
      "Epoch [170/200], Step [200/600], d_loss: 1.0690, g_loss: 1.3984, D(x): 0.67, D(G(z)): 0.32\n",
      "Epoch [170/200], Step [400/600], d_loss: 0.8827, g_loss: 1.7911, D(x): 0.73, D(G(z)): 0.32\n",
      "Epoch [170/200], Step [600/600], d_loss: 1.0984, g_loss: 1.5200, D(x): 0.57, D(G(z)): 0.24\n",
      "Epoch [171/200], Step [200/600], d_loss: 0.9472, g_loss: 1.5165, D(x): 0.66, D(G(z)): 0.28\n",
      "Epoch [171/200], Step [400/600], d_loss: 0.9751, g_loss: 1.3069, D(x): 0.68, D(G(z)): 0.31\n",
      "Epoch [171/200], Step [600/600], d_loss: 1.0032, g_loss: 1.4605, D(x): 0.69, D(G(z)): 0.34\n",
      "Epoch [172/200], Step [200/600], d_loss: 0.9325, g_loss: 1.5190, D(x): 0.76, D(G(z)): 0.34\n",
      "Epoch [172/200], Step [400/600], d_loss: 0.9700, g_loss: 1.9615, D(x): 0.62, D(G(z)): 0.24\n",
      "Epoch [172/200], Step [600/600], d_loss: 0.9305, g_loss: 1.7068, D(x): 0.69, D(G(z)): 0.32\n",
      "Epoch [173/200], Step [200/600], d_loss: 0.8363, g_loss: 1.6232, D(x): 0.69, D(G(z)): 0.29\n",
      "Epoch [173/200], Step [400/600], d_loss: 0.9763, g_loss: 1.5416, D(x): 0.69, D(G(z)): 0.33\n",
      "Epoch [173/200], Step [600/600], d_loss: 0.8842, g_loss: 1.5323, D(x): 0.65, D(G(z)): 0.25\n",
      "Epoch [174/200], Step [200/600], d_loss: 0.8496, g_loss: 1.4167, D(x): 0.78, D(G(z)): 0.31\n",
      "Epoch [174/200], Step [400/600], d_loss: 0.8380, g_loss: 1.6155, D(x): 0.77, D(G(z)): 0.34\n",
      "Epoch [174/200], Step [600/600], d_loss: 1.0320, g_loss: 1.4294, D(x): 0.70, D(G(z)): 0.35\n",
      "Epoch [175/200], Step [200/600], d_loss: 0.8364, g_loss: 1.7876, D(x): 0.71, D(G(z)): 0.25\n",
      "Epoch [175/200], Step [400/600], d_loss: 0.8648, g_loss: 1.5701, D(x): 0.66, D(G(z)): 0.25\n",
      "Epoch [175/200], Step [600/600], d_loss: 0.9298, g_loss: 1.5398, D(x): 0.64, D(G(z)): 0.26\n",
      "Epoch [176/200], Step [200/600], d_loss: 1.0514, g_loss: 1.2277, D(x): 0.67, D(G(z)): 0.37\n",
      "Epoch [176/200], Step [400/600], d_loss: 0.8940, g_loss: 1.4686, D(x): 0.70, D(G(z)): 0.31\n",
      "Epoch [176/200], Step [600/600], d_loss: 0.9999, g_loss: 1.1218, D(x): 0.72, D(G(z)): 0.38\n",
      "Epoch [177/200], Step [200/600], d_loss: 0.9412, g_loss: 1.4634, D(x): 0.75, D(G(z)): 0.38\n",
      "Epoch [177/200], Step [400/600], d_loss: 0.9303, g_loss: 1.4308, D(x): 0.76, D(G(z)): 0.37\n",
      "Epoch [177/200], Step [600/600], d_loss: 0.9500, g_loss: 1.5487, D(x): 0.71, D(G(z)): 0.33\n",
      "Epoch [178/200], Step [200/600], d_loss: 0.7771, g_loss: 1.7104, D(x): 0.74, D(G(z)): 0.29\n",
      "Epoch [178/200], Step [400/600], d_loss: 1.0953, g_loss: 1.3701, D(x): 0.78, D(G(z)): 0.46\n",
      "Epoch [178/200], Step [600/600], d_loss: 0.9654, g_loss: 1.2168, D(x): 0.75, D(G(z)): 0.38\n",
      "Epoch [179/200], Step [200/600], d_loss: 0.8095, g_loss: 1.3608, D(x): 0.73, D(G(z)): 0.31\n",
      "Epoch [179/200], Step [400/600], d_loss: 1.0183, g_loss: 1.4375, D(x): 0.68, D(G(z)): 0.32\n",
      "Epoch [179/200], Step [600/600], d_loss: 0.8700, g_loss: 1.7068, D(x): 0.70, D(G(z)): 0.29\n",
      "Epoch [180/200], Step [200/600], d_loss: 0.8139, g_loss: 1.7606, D(x): 0.67, D(G(z)): 0.21\n",
      "Epoch [180/200], Step [400/600], d_loss: 1.0363, g_loss: 1.6809, D(x): 0.78, D(G(z)): 0.41\n",
      "Epoch [180/200], Step [600/600], d_loss: 1.0476, g_loss: 1.6064, D(x): 0.60, D(G(z)): 0.25\n",
      "Epoch [181/200], Step [200/600], d_loss: 1.1214, g_loss: 1.3202, D(x): 0.71, D(G(z)): 0.38\n",
      "Epoch [181/200], Step [400/600], d_loss: 0.8013, g_loss: 1.8784, D(x): 0.70, D(G(z)): 0.24\n",
      "Epoch [181/200], Step [600/600], d_loss: 0.8856, g_loss: 1.6748, D(x): 0.68, D(G(z)): 0.29\n",
      "Epoch [182/200], Step [200/600], d_loss: 0.9316, g_loss: 1.7849, D(x): 0.70, D(G(z)): 0.30\n",
      "Epoch [182/200], Step [400/600], d_loss: 1.0417, g_loss: 1.4846, D(x): 0.66, D(G(z)): 0.33\n",
      "Epoch [182/200], Step [600/600], d_loss: 0.9911, g_loss: 1.4178, D(x): 0.71, D(G(z)): 0.34\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [183/200], Step [200/600], d_loss: 1.1098, g_loss: 1.3320, D(x): 0.73, D(G(z)): 0.45\n",
      "Epoch [183/200], Step [400/600], d_loss: 0.8945, g_loss: 1.4262, D(x): 0.74, D(G(z)): 0.33\n",
      "Epoch [183/200], Step [600/600], d_loss: 0.8880, g_loss: 1.3911, D(x): 0.69, D(G(z)): 0.30\n",
      "Epoch [184/200], Step [200/600], d_loss: 0.9063, g_loss: 1.6719, D(x): 0.69, D(G(z)): 0.30\n",
      "Epoch [184/200], Step [400/600], d_loss: 0.9953, g_loss: 1.1237, D(x): 0.73, D(G(z)): 0.38\n",
      "Epoch [184/200], Step [600/600], d_loss: 0.9354, g_loss: 1.5820, D(x): 0.74, D(G(z)): 0.36\n",
      "Epoch [185/200], Step [200/600], d_loss: 1.1107, g_loss: 1.4141, D(x): 0.69, D(G(z)): 0.34\n",
      "Epoch [185/200], Step [400/600], d_loss: 0.9595, g_loss: 1.8344, D(x): 0.66, D(G(z)): 0.26\n",
      "Epoch [185/200], Step [600/600], d_loss: 0.9016, g_loss: 1.6517, D(x): 0.69, D(G(z)): 0.28\n",
      "Epoch [186/200], Step [200/600], d_loss: 1.0428, g_loss: 1.5259, D(x): 0.72, D(G(z)): 0.38\n",
      "Epoch [186/200], Step [400/600], d_loss: 1.2220, g_loss: 1.4124, D(x): 0.65, D(G(z)): 0.40\n",
      "Epoch [186/200], Step [600/600], d_loss: 1.0212, g_loss: 1.9274, D(x): 0.64, D(G(z)): 0.30\n",
      "Epoch [187/200], Step [200/600], d_loss: 0.7947, g_loss: 1.8453, D(x): 0.72, D(G(z)): 0.27\n",
      "Epoch [187/200], Step [400/600], d_loss: 0.9055, g_loss: 1.6557, D(x): 0.74, D(G(z)): 0.35\n",
      "Epoch [187/200], Step [600/600], d_loss: 1.0919, g_loss: 1.3923, D(x): 0.56, D(G(z)): 0.22\n",
      "Epoch [188/200], Step [200/600], d_loss: 1.0267, g_loss: 1.4398, D(x): 0.67, D(G(z)): 0.33\n",
      "Epoch [188/200], Step [400/600], d_loss: 0.9792, g_loss: 1.9432, D(x): 0.64, D(G(z)): 0.26\n",
      "Epoch [188/200], Step [600/600], d_loss: 0.9703, g_loss: 1.5691, D(x): 0.68, D(G(z)): 0.31\n",
      "Epoch [189/200], Step [200/600], d_loss: 0.8600, g_loss: 2.0062, D(x): 0.74, D(G(z)): 0.29\n",
      "Epoch [189/200], Step [400/600], d_loss: 0.6401, g_loss: 1.9363, D(x): 0.77, D(G(z)): 0.23\n",
      "Epoch [189/200], Step [600/600], d_loss: 0.8401, g_loss: 1.5472, D(x): 0.66, D(G(z)): 0.25\n",
      "Epoch [190/200], Step [200/600], d_loss: 0.9103, g_loss: 1.7820, D(x): 0.74, D(G(z)): 0.34\n",
      "Epoch [190/200], Step [400/600], d_loss: 1.1257, g_loss: 1.3634, D(x): 0.71, D(G(z)): 0.42\n",
      "Epoch [190/200], Step [600/600], d_loss: 0.9552, g_loss: 1.3272, D(x): 0.71, D(G(z)): 0.34\n",
      "Epoch [191/200], Step [200/600], d_loss: 1.0406, g_loss: 1.1637, D(x): 0.62, D(G(z)): 0.30\n",
      "Epoch [191/200], Step [400/600], d_loss: 0.9173, g_loss: 1.6682, D(x): 0.75, D(G(z)): 0.33\n",
      "Epoch [191/200], Step [600/600], d_loss: 0.8351, g_loss: 1.4616, D(x): 0.73, D(G(z)): 0.31\n",
      "Epoch [192/200], Step [200/600], d_loss: 0.9885, g_loss: 1.5259, D(x): 0.73, D(G(z)): 0.35\n",
      "Epoch [192/200], Step [400/600], d_loss: 1.0529, g_loss: 1.3233, D(x): 0.74, D(G(z)): 0.42\n",
      "Epoch [192/200], Step [600/600], d_loss: 1.0553, g_loss: 1.4868, D(x): 0.65, D(G(z)): 0.30\n",
      "Epoch [193/200], Step [200/600], d_loss: 0.9101, g_loss: 1.6312, D(x): 0.67, D(G(z)): 0.28\n",
      "Epoch [193/200], Step [400/600], d_loss: 1.0810, g_loss: 1.6942, D(x): 0.53, D(G(z)): 0.18\n",
      "Epoch [193/200], Step [600/600], d_loss: 1.1240, g_loss: 1.7881, D(x): 0.61, D(G(z)): 0.29\n",
      "Epoch [194/200], Step [200/600], d_loss: 0.9814, g_loss: 1.3295, D(x): 0.73, D(G(z)): 0.37\n",
      "Epoch [194/200], Step [400/600], d_loss: 0.8440, g_loss: 1.2365, D(x): 0.68, D(G(z)): 0.28\n",
      "Epoch [194/200], Step [600/600], d_loss: 1.0749, g_loss: 1.3187, D(x): 0.70, D(G(z)): 0.38\n",
      "Epoch [195/200], Step [200/600], d_loss: 0.9266, g_loss: 1.6384, D(x): 0.67, D(G(z)): 0.26\n",
      "Epoch [195/200], Step [400/600], d_loss: 0.8066, g_loss: 1.7214, D(x): 0.68, D(G(z)): 0.23\n",
      "Epoch [195/200], Step [600/600], d_loss: 0.8625, g_loss: 1.4539, D(x): 0.77, D(G(z)): 0.34\n",
      "Epoch [196/200], Step [200/600], d_loss: 1.0493, g_loss: 1.7914, D(x): 0.63, D(G(z)): 0.28\n",
      "Epoch [196/200], Step [400/600], d_loss: 0.8147, g_loss: 1.3704, D(x): 0.75, D(G(z)): 0.31\n",
      "Epoch [196/200], Step [600/600], d_loss: 1.3110, g_loss: 1.2842, D(x): 0.60, D(G(z)): 0.40\n",
      "Epoch [197/200], Step [200/600], d_loss: 1.1380, g_loss: 1.4227, D(x): 0.60, D(G(z)): 0.29\n",
      "Epoch [197/200], Step [400/600], d_loss: 0.9644, g_loss: 1.2907, D(x): 0.68, D(G(z)): 0.32\n",
      "Epoch [197/200], Step [600/600], d_loss: 1.1965, g_loss: 1.6699, D(x): 0.56, D(G(z)): 0.29\n",
      "Epoch [198/200], Step [200/600], d_loss: 0.9285, g_loss: 1.3085, D(x): 0.72, D(G(z)): 0.34\n",
      "Epoch [198/200], Step [400/600], d_loss: 1.0755, g_loss: 1.6380, D(x): 0.60, D(G(z)): 0.28\n",
      "Epoch [198/200], Step [600/600], d_loss: 0.9046, g_loss: 1.6841, D(x): 0.70, D(G(z)): 0.30\n",
      "Epoch [199/200], Step [200/600], d_loss: 0.9799, g_loss: 1.2366, D(x): 0.66, D(G(z)): 0.31\n",
      "Epoch [199/200], Step [400/600], d_loss: 1.0471, g_loss: 1.3904, D(x): 0.58, D(G(z)): 0.26\n"
     ]
    }
   ],
   "source": [
    "for epoch in range(num_epochs):\n",
    "    for i, (images, _) in enumerate(data_loader):\n",
    "        images = images.reshape(batch_size, -1).to(device)\n",
    "        \n",
    "        # 定义图像是真或假的标签\n",
    "        real_labels = torch.ones(batch_size, 1).to(device)\n",
    "        fake_labels = torch.zeros(batch_size, 1).to(device)\n",
    "\n",
    "        # ================================================================== #\n",
    "        #                      训练判别器                                    #\n",
    "        # ================================================================== #\n",
    "\n",
    "        # 定义判断器对真图片的损失函数\n",
    "        outputs = D(images)\n",
    "        d_loss_real = criterion(outputs, real_labels)\n",
    "        real_score = outputs\n",
    "        \n",
    "        # 定义判别器对假图片（即由潜在空间点生成的图片）的损失函数\n",
    "        z = torch.randn(batch_size, latent_size).to(device)\n",
    "        fake_images = G(z)\n",
    "        outputs = D(fake_images)\n",
    "        d_loss_fake = criterion(outputs, fake_labels)\n",
    "        fake_score = outputs        \n",
    "     \n",
    "        # 得到判别器总的损失函数\n",
    "        d_loss = d_loss_real + d_loss_fake\n",
    "        \n",
    "        # 对生成器、判别器的梯度清零        \n",
    "        reset_grad()\n",
    "        d_loss.backward()\n",
    "        d_optimizer.step()\n",
    "        \n",
    "        # ================================================================== #\n",
    "        #                        训练生成器                                  #\n",
    "        # ================================================================== #\n",
    "\n",
    "        # 定义生成器对假图片的损失函数，这里我们要求\n",
    "        #判别器生成的图片越来越像真图片，故损失函数中\n",
    "        #的标签改为真图片的标签，即希望生成的假图片，\n",
    "        #越来越靠近真图片\n",
    "        z = torch.randn(batch_size, latent_size).to(device)\n",
    "        fake_images = G(z)\n",
    "        outputs = D(fake_images)\n",
    "        \n",
    "        \n",
    "        g_loss = criterion(outputs, real_labels)\n",
    "        \n",
    "        # 对生成器、判别器的梯度清零\n",
    "        #进行反向传播及运行生成器的优化器\n",
    "        reset_grad()\n",
    "        g_loss.backward()\n",
    "        g_optimizer.step()\n",
    "        \n",
    "        if (i+1) % 200 == 0:\n",
    "            print('Epoch [{}/{}], Step [{}/{}], d_loss: {:.4f}, g_loss: {:.4f}, D(x): {:.2f}, D(G(z)): {:.2f}' \n",
    "                  .format(epoch, num_epochs, i+1, total_step, d_loss.item(), g_loss.item(), \n",
    "                          real_score.mean().item(), fake_score.mean().item()))\n",
    "    \n",
    "    # 保存真图片\n",
    "    if (epoch+1) == 1:\n",
    "        images = images.reshape(images.size(0), 1, 28, 28)\n",
    "        save_image(denorm(images), os.path.join(sample_dir, 'real_images.png'))\n",
    "    \n",
    "    # 保存假图片\n",
    "    fake_images = fake_images.reshape(fake_images.size(0), 1, 28, 28)\n",
    "    save_image(denorm(fake_images), os.path.join(sample_dir, 'fake_images-{}.png'.format(epoch+1)))\n",
    "\n",
    "# 保存模型\n",
    "torch.save(G.state_dict(), 'G.ckpt')\n",
    "torch.save(D.state_dict(), 'D.ckpt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "reconsPath = './gan_samples/real_images.png'\n",
    "Image = mpimg.imread(reconsPath)\n",
    "plt.imshow(Image) # 显示图片\n",
    "plt.axis('off') # 不显示坐标轴\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "reconsPath = './gan_samples/fake_images-200.png'\n",
    "Image = mpimg.imread(reconsPath)\n",
    "plt.imshow(Image) # 显示图片\n",
    "plt.axis('off') # 不显示坐标轴\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
